Scala未来设计问题
问题描述:
我不明白为什么Scala的Future
比Twitters更难使用并且功能更少,而第一个是在第二个之后创建的。因此,这里有大约scala.concurrent.Future
问题:Scala未来设计问题
- 为什么
Future.onComplete
回报Unit
代替Future
?可组合的方法更方便。 - 为什么Scala的
Future
不支持取消?
答
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?
地图是转换,我不希望进行转换。我想在返回的Future Future上添加'onSuccess'和'onFailure'处理程序 –
对不起,好点 - 我误解了。我相应地更新了我的答案。听起来像scala不希望'onComplete','onSuccess'和'onFailure'方法是可链接的,因为这可能意味着所有链接回调的顺序。听起来像一个合理的权衡 –
http://stackoverflow.com/questions/32987855/what-are-advantages-of-a-twitter-future-over-a-scala-future有关于两者之间的差异更多的信息。 – Shastick