scala - 理解 Scala 的 Futures 和 Promises

标签 scala promise future

我正在努力理解这个概念。我很清楚 future 是什么。我对 Promises 有点困惑。下面的代码片段:

val p = Promise[Int]() // gives me a DefaultPromise
val f = p.future // gives me the future computation for the Promise p

下面两个代码片段有什么区别?

p success { 10 }

val x = Future {
  p success { 10 }
}

我对第一个的理解是 p 成功将完成与该 p 相关的 future 计算。该计算是异步的吗?这与使用 Future block 来完成与 Promise p 关联的 Future f 的第二个代码片段有何不同?

最佳答案

在您的示例中,您可以考虑等效的 p success { 10 } Future(10)。您只需从 p 中提取 future 即可获得相同的结果。

您可以将 Promises 视为可写的 Future,您将在其中定义计算的成功或失败。由于它看起来有点命令式编程,您可能会在非常特殊的情况下使用它们。您可以在这个 link 中看到其中一些案例.

关于scala - 理解 Scala 的 Futures 和 Promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30098176/

相关文章:

java - 如何等待 future 列表得到满意的结果?

javascript - Nodejs 与 promise 并行

multithreading - 批处理的并行数据提取

clojure - 我想并行化我的 Clojure 实现

list - scala:组合两组列表

javascript - 等待 async .map() 完成后如何返回推送的数组?

javascript - Angular - 测试组件 - 从模拟返回 Promise.reject 时出错

scala - Await.result(...) Scala 2.10 中 fatal error 和异常处理之间的区别

java.lang.NoClassDefFoundError : scala/StringContext

scala - 使用 Slick 2.0 的通用 CRUD 操作