У меня есть будущее Scala, которое вызывает api и возвращает будущее, если результат неверен, тогда другой api-вызов будет отправлен с результатом первого будущего и возвращен как будущее.Ожидаемый возврат Scala на основе первого результата в будущем
Это то, что у меня есть до сих пор.
val fut1 = Future(queryFirst)
val fut2 = fut1 map {
case y if y.isInstanceOf[NoResult] => Future(queryAgainWithFut1Result)
case x => x
}
Но если доступ FUT2 результат, это дает что-то вроде этого:
scala.concurrent.Await.result(fut2, 5 seconds)
warning: there was one feature warning; re-run with -feature for details
fut2: Any = [email protected]
Есть ли способ, что я могу выбрать, чтобы вернуться FUT2 если FUT1 результат не является точным?
Редактировать: Второе будущее должно использовать первое будущее для продолжения вызова api. Это то, что у меня есть до сих пор.
val fut1 = Future("queryFirst")
val fut2 = fut1 flatMap {
case y if y.isInstanceOf[Int] => Future("queryAgainWithResult(y)")
case x => Future(x)
}
Знаете ли вы о 'recoverWith'? –