了解 Scala 的未来,然后



我正在尝试使用andThen方法来注册未来的行动阶段。喜欢这个:

implicit val executionContext = ExecutionContext.global
val f = Future(0)
f.andThen {
case r => println(r.get + "1")
} andThen {
case r => println(r.get + "2")
}

由于此方法异步执行并且不会产生 返回值,引发的任何非致命异常都将报告给 执行上下文 .

异步是什么意思?这意味着对未来的执行本身异步?

异步是什么意思?它意味着异步到 未来执行本身?

这意味着在原始Future[T]完成后,andThen将在ExecutionContext提供的给定线程上执行。

如果我们看一下实现:

def andThen[U](pf: PartialFunction[Try[T], U])(implicit executor: ExecutionContext): Future[T] = {
val p = Promise[T]()
onComplete {
case r => try pf.applyOrElse[Try[T], Any](r, Predef.conforms[Try[T]]) finally p complete r
}
p.future
}

此方法是Future.onComplete上的智能包装器,这是一种返回Unit的副作用方法。它应用给定的函数,并返回原始Future[T]结果。如文档所述,当您想要保证将来注册的多个onComplete回调的顺序时,它很有用。

最新更新