【发布时间】:2016-02-27 05:46:10
【问题描述】:
我不明白为什么 Scala 的 Future 比 Twitter 更难使用且功能更少,而第一个是在第二个之后创建的。所以,这里有关于scala.concurrent.Future的问题:
- 为什么
Future.onComplete返回Unit而不是Future?可组合的方法更方便。 - 为什么 Scala 的
Future不支持取消?
【问题讨论】:
标签: scala
我不明白为什么 Scala 的 Future 比 Twitter 更难使用且功能更少,而第一个是在第二个之后创建的。所以,这里有关于scala.concurrent.Future的问题:
Future.onComplete 返回Unit 而不是Future?可组合的方法更方便。Future 不支持取消?【问题讨论】:
标签: scala
Future.onComplete 返回一个单元,因此不能链接调用。根据 scala 文档,“请注意,这种设计是有意的,以避免暗示链式调用可能暗示已注册回调的执行顺序(在同一未来注册的回调是无序的)。”
要组成未来,请使用flatMap、andThen 和filter 等组合子,它们都返回一个Future。
查看http://docs.scala-lang.org/overviews/core/futures.html#functional-composition-and-for-comprehensions了解更多详情
我认为取消是非常微妙的。有关详细信息,请参阅此讨论:How to cancel Future in Scala?
【讨论】:
onSuccess 和 onFailure 处理程序
onComplete、onSuccess 和 onFailure 方法可链接,因为这可能意味着所有链接回调的顺序。听起来像是一个合理的权衡