【问题标题】:Scala Future design questionsScala 未来设计问题
【发布时间】:2016-02-27 05:46:10
【问题描述】:

我不明白为什么 Scala 的 Future 比 Twitter 更难使用且功能更少,而第一个是在第二个之后创建的。所以,这里有关于scala.concurrent.Future的问题:

  • 为什么Future.onComplete 返回Unit 而不是Future?可组合的方法更方便。
  • 为什么 Scala 的 Future 不支持取消?

【问题讨论】:

    标签: scala


    【解决方案1】:

    Future.onComplete 返回一个单元,因此不能链接调用。根据 scala 文档,“请注意,这种设计是有意的,以避免暗示链式调用可能暗示已注册回调的执行顺序(在同一未来注册的回调是无序的)。”

    要组成未来,请使用flatMapandThenfilter 等组合子,它们都返回一个Future。

    查看http://docs.scala-lang.org/overviews/core/futures.html#functional-composition-and-for-comprehensions了解更多详情

    我认为取消是非常微妙的。有关详细信息,请参阅此讨论:How to cancel Future in Scala?

    【讨论】:

    • 地图是转型,我不想要转型。我想在返回的 Future 上添加 onSuccessonFailure 处理程序
    • 啊抱歉,说得好——我误会了。我相应地更新了我的答案。听起来 scala 不希望 onCompleteonSuccessonFailure 方法可链接,因为这可能意味着所有链接回调的顺序。听起来像是一个合理的权衡
    • stackoverflow.com/questions/32987855/… 有更多关于两者区别的信息。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2018-03-15
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2018-06-17
    • 2011-01-18
    相关资源
    最近更新 更多