由Scala Async撰写期货

时间:2015-09-07 01:11:08

标签: scala concurrency async-await

有期货f1,f2和f3。如果我们需要等到f1 and f2完成or f3,即条件看起来像completed(f1) & completed(f2) | completed(f3),我们如何才能使用Scala Async来流利地构成它?

1 个答案:

答案 0 :(得分:2)

我不知道异步,但您可能会找到使用Future.firstCompletedOfpromises的解决方案。关于此问题已经有post了。

如果您不关心取消期货,您可以简单地执行以下操作:

val f1 = Future { /*...*/ }
val f2 = Future { /*...*/ }
val f3 = Future { /*...*/ }

Future.firstCompletedOf(Seq(f1.flatMap(f2), f3))