У меня есть два актера, которые могут либо вернуть Result, который является логическим значением в моем случае, либо они могут выдать исключение, вот мой код
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
Здесь я хочу достичь
script-1 , если futureA и FutureB успешно, я должен получить что-то вроде (futureResponseA, futureResponseB) // (true, true)
script-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[?]
Как архивировать эти сканеры, пожалуйста, руководство