【发布时间】:2015-09-07 11:25:56
【问题描述】:
有期货 f1、f2 和 f3。如果我们需要等到 f1 and f2 都完成 or f3 完成,即条件看起来像completed(f1) & completed(f2) | completed(f3),我们如何使用Scala Async 来流畅地组合它?
【问题讨论】:
标签: scala concurrency async-await
有期货 f1、f2 和 f3。如果我们需要等到 f1 and f2 都完成 or f3 完成,即条件看起来像completed(f1) & completed(f2) | completed(f3),我们如何使用Scala Async 来流畅地组合它?
【问题讨论】:
标签: scala concurrency async-await
我不知道异步,但您可能会找到使用Future.firstCompletedOf 和promises 的解决方案。 SO 上已经有一个post 与此相关。
如果您不关心取消期货,您可以简单地执行以下操作:
val f1 = Future { /*...*/ }
val f2 = Future { /*...*/ }
val f3 = Future { /*...*/ }
Future.firstCompletedOf(Seq(f1.flatMap(f2), f3))
【讨论】: