有期货f1,f2和f3。如果我们需要等到f1 and
f2完成or
f3,即条件看起来像completed(f1) & completed(f2) | completed(f3)
,我们如何才能使用Scala Async来流利地构成它?
答案 0 :(得分:2)
我不知道异步,但您可能会找到使用Future.firstCompletedOf和promises的解决方案。关于此问题已经有post了。
如果您不关心取消期货,您可以简单地执行以下操作:
val f1 = Future { /*...*/ }
val f2 = Future { /*...*/ }
val f3 = Future { /*...*/ }
Future.firstCompletedOf(Seq(f1.flatMap(f2), f3))