我有两个演员,他们可以返回在我的情况下是布尔值的结果,或者他们可以抛出异常这是我的代码
val futureA: Future[Boolean] = ask(ActorA, MessageA(obj)).mapTo[Boolean]
val resultA = Await.result(futureA, timeout.duration) //can return boolean or throw an exception
val futureB: Future[Boolean] = ask(ActorB, MessageB(obj)).mapTo[Boolean]
val resultb = Await.result(futureB, timeout.duration)//can return boolean or throw an exception
在这里,我想实现
场景 1,如果 futureA 和 FutureB 成功我应该得到类似 (futureResponseA,futureResponseB) //(true, true)
方案 2如果 futureA 失败它应该继续 FutureB 如果它成功返回我应该得到类似 (exceptionOfFutureA,resultofFutureB)
场景3如果futureA成功返回并且futureB失败我应该得到类似(futureResponseA,exceptionOfFutureB)
场景 4如果 futureA 和 futureB 都失败了,我应该得到类似 (exceptionOfFutureA,exceptionOfFutureB)
为此我尝试了 val futureA = ask(ActorA, MessageA(obj)).mapTo[Boolean] val futureB = ask(ActorB, MessageB(obj)).mapTo[Boolean]
val f = Try {Future.sequence(List(futureA, futureB))}
val result = Await.result(f, Duration.Inf)
但我在这val result
条线上遇到错误
found : scala.util.Try[scala.concurrent.Future[List[Boolean]]]
[error] required: scala.concurrent.Awaitable[?]
我如何存档这些扫描仪请指导