我一直在尝试简化我在 Scala 中做期货的方式。我得到了一点 aFuture[Option[Future[Option[Boolean]]
但我在下面进一步简化了它。有没有更好的方法来简化这个?
通过“失败”的未来似乎并不是最好的方法。即在顺序世界中,我只是返回“失败!!” 任何时候它都失败了,而不是继续到最后。还有其他方法吗?
val doSimpleWork = Future {
//Do any arbitrary work (can be a different function)
true //or false
}
val doComplexWork = Future {
//Do any arbitrary work (can be a different function)
Some("result") //or false
}
val failed = Future {
//Do no work at all!!! Just return
false
}
val fut1 = doSimpleWork
val fut2 = doSimpleWork
val fut3 = (fut1 zip fut2).map({
case (true, true) => true
case _ => false
})
val fut4 = fut3.flatMap({
case true =>
doComplexWork.flatMap({
case Some("result") =>
doSimpleWork
case None =>
failed
})
case false =>
failed
})
fut4.map({
case true =>
"SUCCESS!!!"
case _ =>
"FAIL!!"
})