我想做一些事情,比如创建两个 Future,使用一个代码路径中第一个返回的那个,然后将“慢”Future 发送到不同的代码路径。
一个用例是,例如我可以选择调用“变速”和“旧可靠”两个外部端点之一。来自任一者的数据都很好,所以我宁愿调用两者并使用“以先到者为准”和(也许也对其他输出执行某些操作)。
我总是可以检查 future 是否准备好,但是有没有比例如更干净的东西?只是在循环中调用 Await.ready
吗? (人们怎么称呼这种模式?)
最佳答案
这只是:
Future.firstCompletedOf(List(f1, f2)).map(first => ...)
//or `foreach`/`Await` if you can't interact with Future-ready IO
这里是scaladocs 。
关于scala - Scala future 的 "Speculative execution",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48964995/