我在Scala REPL中创建了一些简单的代码:
import scala.concurrent.ExecutionContext.Implicits.global
Future { println("Hello from the future") }
并注意到输出是这样的:
scala> Future { println("Hello from the future") }
Hello from the future
res5: scala.concurrent.Future[Unit] = scala.concurrent.impl.Promise$DefaultPromise@1706a01b
为什么未来的价值是承诺?我认为Promise包含Future,而不是相反?
答案 0 :(得分:0)
在Future API中,apply
(工厂/构造函数Future[T](=> T)
)被指定为返回Future[T]
。除了异步编程的抽象之外,它还具有ExecutionContext
特有的实现细节(不需要知道)。实现可能与另一个执行上下文不同。
答案 1 :(得分:0)
每个Future
都有一个对应的Promise
。您获得的对象是DefaultPromise
,它同时实现Future
和Promise
。但是,这是一个实现细节。