我有一個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'嗎? – 2015-03-13 18:12:36