我目前正在努力解决scala中Future回调的逻辑问题。 我正在尝试获得一个应该执行以下操作的方法:
这是我的代码,由于某些原因不起作用:
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的值?
答案 0 :(得分:2)
您可以结合使用Future.fallbackTo
和Future.recoverWith
:
def eitherF(x: Future[Int], y: Future[Int]): Future[Int] = {
x.recoverWith {
case _: Exception => y
}
}