【发布时间】:2016-09-29 10:47:40
【问题描述】:
我目前正在为 scala 中的 Future 回调逻辑而苦苦挣扎。 我正在尝试获得一种应该执行以下操作的方法:
- 如果 x 成功完成,则以值 x 完成
- 如果 x 失败并最终以值 y 完成
- 如果 x 和 y 失败,则完成,但 y 失败。
这是我的代码,由于某种原因它不起作用:
def eitherF(x: Future[Int], y: Future[Int]): Future[Int] = {
var ret : Future[Int] = x
ret onComplete {
case Success(i) =>
case Failure(t) => ret = ret.flatMap(e => y)
}
ret
}
当 ret 返回时,它总是有 x 的值,就像 onComplete 块被完全忽略一样。 如何根据从 x 和 y 得到的结果修改 ret 的值?
【问题讨论】:
-
是返回异常还是抛出异常?
-
在案例 3 中,我想返回导致异常的同一个 Future y。