gpt4 book ai didi

scala - Scala Future.fallbackTo 有什么用

转载 作者:行者123 更新时间:2023-12-04 01:36:23 25 4
gpt4 key购买 nike

鉴于此代码

val f1: Future[Int] = Future { 5 } //Future.failed(new Exception("sorry"))
val f2: Future[Int] = Future { 6 }

val result : Future[Int] = f1.fallbackTo {
println("Fall back to that F")
f2
}

结果包含 f1 的结果。但是,无论 f1 是否失败,都会执行 fallbackTo 块中的代码。我原以为只有在 f1 失败时才会执行 fallbackTo 块。

也许我的例子太简单了(或者说错了),但是 fallbackTo 有什么用呢?

最佳答案

你说得对,f1成功则返回,否则返回f2 ,您看到的打印是因为该块没有被懒惰地评估:

def fallbackTo[U >: T](that: Future[U]): Future[U]

所以似乎 f2在传递给 fallbackTo 时启动(因此执行打印语句)。可能这是一个设计选择,如果它会被懒惰地评估 f2只有在 f1 失败后才会启动.

如果你想避免这种行为,你可以使用 recoverWith只有在失败后才会触发:
f1.recoverWith{ case _ => println(123); Future { 6 } }

关于scala - Scala Future.fallbackTo 有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25946942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com