18-小结
14.5 小结
全面深入地理解异步编程中的复杂性,以及为了管理它所引入的各种机制—它们是理解现代JavaScript开发的关键。本章中学到了:
- JavaScript中的异步执行是通过回调来管理的。
- promise并不能替代回调函数,相反,promise需要then和catch回调函数。
- promise可以解决一个回调函数被多次调用的问题。
- 如果你需要多次调用一个回调函数,考虑使用事件(它可以跟promise结合使用)。
- promise并不能保证它自己被处理,不过,可以把它们封装在超时中来避免promise不被处理。
- promise可以被链式调用,实现简单的组合。
- promise可以与生成器运行器结合使用,从而可以在不丢失异步执行的好处的前提下使用同步语法。
- 当用同步语法编写生成器函数时,应该仔细地去理解算法中的哪一部分可以被并行运行,然后使用Promise.all来运行它们。
- 开发人员不应该编写自己的生成器运行器,应该使用co或者Koa。
- 开发人员也不应该自己编写代码来将Node格式的回调转化到promise中,应该使用Q。
异常处理通过生成器运行器可以在同步语法中工作。如果读者的编程经验仅限于使用具有同步语法的编程语言,那么学习JavaScript中的同步编程可能会让人望而生畏;至少对于作者来说是这样的。不过,这是现代JavaScript项目中的一项基本技能。