scala - Scala future 的 "Speculative execution"

标签 scala future

我想做一些事情,比如创建两个 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/

相关文章:

xml - scala.xml.RuleTransformer 的复杂性真的呈指数级增长吗?

python - Pyspark java.lang.OutOfMemoryError : Requested array size exceeds VM limit 错误

firebase - UI 卡在闪屏中

scala - 在 Scala 中更新二维数组元素的最优化方法

scala - 是否有可能实现(在 Scala 中)自动实现包装类方法的多态包装类?

java - 具有 SupplyAsync 的 CompletableFuture 未按预期工作

PHP 计算从今天起的 Google 调查选择加入代码的天数

java - CompletableFuture 成功 join() 设置字段后,字段是否保证一致?

mysql - Play 2.0 Complex join query如何解析(Anorm)

c++ - 如何反转 set_value() 和 'deactivate' promise ?