繁体   English   中英

了解Scala Future和Thhen

[英]Understanding Scala Future andThen

我正在尝试使用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")
}

由于此方法异步执行并且不生成返回值,因此抛出的任何非致命异常都将报告给ExecutionContext。

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

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

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

如果我们看一下实现:

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回调的顺序时,它很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM