у меня есть два участника, они могут либо вернуть результат, который в моем случае является логическим значением, либо они могут выбросить исключение, вот мой код
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[?]
Как я могу заархивировать эти сканеры, пожалуйста, руководство