5.6 总结

本章介绍了 futures。 你已经学了如何用 futures 从异步函数来创建流。 目标是显式的最小化阻塞和在线程上等待,最大化资源使用率并最小化不必要的延迟。

Future 是最终可用的函数结果的占位符。 它是把函数组合成异步流的极好工具。 futures 让定义从一个结果到下一个的转换成为可能。 因为 futures 是关于函数结果的,需要使用函数式方法来结合这些结果毫不奇怪。

futures 的结合器方法提供了类似 scala 集合库中的结合器的“转化风格”。 函数是并发执行的,需要时在串行,最终提供了有意义的结果。 Future 可以包含成功值,或失败结果。 幸运的是,失败可以用替代值来恢复,以使流可以继续。

Future 中包含的值应当是不可变的,以保证不会意外共享可变状态。 Future 可以在 Actors 中使用,但是你需要小心你要关闭的状态(TODO:close ovew 什么意思)。 actor 的发送者引用需要捕获进一个变量里,比如在安全使用前。 Futures 可以在 Actor API 中使用,作为 ask 方法的应答。 Future 结果可以通过 pipeTo 方法提供给 actor。

既然你已经知道了 futures, 我们下一章再回到 Actors。 这次我们用 Remote Actors 来扩展 goticks.com 应用。