学习 JavaScript Promises 的最佳资源
hubuke
8年前
<p>Promises 既可能是福音,也可能是灾难。他本被期望解决“回调金字塔的噩梦”,但反而他们总以困惑而告终。(以及我想把它叫做“回调魔域”。这对本文并无影响,我只 是喜欢印第安纳琼斯)。(译者注:魔域奇兵(Temple of Doom)是夺宝奇兵的第二部,作者此处在玩梗...)</p> <p>尽管 promises 确有帮助,但它比普通的回调复杂多了。使用回调,你只需要传递一个函数,也许在其中又插入了另一个函数。但使用 Promise 的话,函数更多了。</p> <p>Promise 链可能会很让人困惑,因为异常、普通的 JS 值和 Promise 都会不同地影响它。设置更复杂的流程也可能会很困难,因为你需要变戏法似的处理多个 Promise 以及它们的返回值。</p> <p>而且,错误处理也是个主题。Promise 的默认行为十分方便:未处理的异常会被忽略,因为很显然,写这份代码的人讨厌所有人并且想你享受额外的愉悦的 debug 时间。</p> <p><strong>但 Promise 是未来。</strong>新的异步 API 都倾向于变为基于 Promise 的。新的 JavaScript 特性如 async/await 也是基于 Promise 的。</p> <p>这就意味着,你越熟悉 Promise,你对未来准备越充分 —— 更别提使用得当的话,尽管复杂,Promise 是非常方便的。</p> <p><strong>正因为这点的重要性,以及我时常收到的关于 Promise 的问题,我为你们把关于 Promise 最佳的资料集合成了一个列表!</strong></p> <p><strong>在下面你会发现大量 Promise 的资料,从基础到超深度!</strong></p> <h3>1. 起步</h3> <p>David Walsh 写的这篇 <a href="/misc/goto?guid=4959677111283599351">Promise 文章</a> 是极佳的入门读物。它很好地概括了 Promise 是什么以及它们是如何工作的,并提供了实例。</p> <h3>2. 深度理解 Promise</h3> <p>想更深度地理解 Promise 是如何工作的话,Pony Foo 上的这篇<a href="/misc/goto?guid=4959677111369489905">文章</a>很棒。它也提供了大量关于如何使用与 Promise 相关的函数的例子。</p> <p>如果你对链式的 Promise 如何工作抱有疑问的话,可视化它会很有帮助。这儿有一个<a href="/misc/goto?guid=4959677111460266320">工具</a>能用来获取 Promise 链工作机制的图像表示。</p> <h3>3. 关于 Promise 的免费章节</h3> <p>想要一份 Promise 的完全解读,包含许多实例甚至还有需要避免的常见错误,可读<a href="/misc/goto?guid=4959677111545288585">探索 ES6 之用于异步编程的 Promise</a>。</p> <p>另一个有大量实例的完全解读资源是这本 YDKJS(你不知道的 JavaScript)的<a href="/misc/goto?guid=4959677111626136422">异步与性能</a>章节。</p> <h3>4. 参考材料 / 快捷信息</h3> <p>如果想要快速参考,MDN 无与伦比。如果你需要快速地查阅某些东西的工作原理,或者一个函数的资料,比如查阅它的参数信息,<a href="/misc/goto?guid=4959654633670757369">MDN Promise 参考资料</a> 会是我的不二选择。</p> <h3>5. 常见错误与反模式</h3> <p>开发者们在使用 Promises 经常会犯一些常见的错误。想要一览这些错误,并获得替代方案的实例的话,读 Tao of Code 上的这篇 <a href="/misc/goto?guid=4959677111744165046">Promise 反模式</a>吧。</p> <h3>6. Promise 如何工作</h3> <p>你想知道知道 Promise 实际上是怎么样工作的吗?Promise 是怎么做到 Promise 的?那就读这篇 <a href="/misc/goto?guid=4959619828807075465">Promise 细枝末节</a>吧,该文一步步地用纯 JavaScript 实现了 Promise。</p> <h3>7. Promise 高级用法</h3> <p>尽管标准的 Promise 很有用,但更为复杂的应用的需要不止于此。<a href="/misc/goto?guid=4959677111851953864">Bluebird</a> 提供了大量 Promise 相关的功能,能大大简化复杂的使用。</p> <p>YDKJS 的作者 Kyle Simpson 的 <a href="/misc/goto?guid=4959677111946436483">Asynquence</a> 也是可选方案。它支持了很多有趣的特性,多少有点像 Bluebird。</p> <h3>8. Promise 单元测试</h3> <p>最后,但同样非常重要的,当你想用 promise 来测试代码时,就来读我的 <a href="/misc/goto?guid=4959677112046364324">JavaScript Promise 与单元测试权威指南</a>)吧。</p> <h3>最后</h3> <p>本文应该覆盖了相当多想象范围内的 Promise 相关的场景。你还有其他觉得有帮助的资源吗?写在评论里吧!</p> <p> </p> <p>来自:http://www.zcfy.cc/article/the-best-resources-to-learn-about-javascript-promises-codeutopia-1040.html</p>