作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
鉴于此代码
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
成功则返回,否则返回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/
我正在阅读以下页面上关于 futures 和 fallbackTo 的使用: scala docs on futures 而且我没有看到我期望的行为。 我有以下测试(取自页面并稍作修改): impor
鉴于此代码 val f1: Future[Int] = Future { 5 } //Future.failed(new Exception("sorry")) val f2: Future[Int]
我是一名优秀的程序员,十分优秀!