學習 JavaScript Promises 的最佳資源

hubuke 8年前發布 | 19K 次閱讀 JavaScript開發 JavaScript

Promises 既可能是福音,也可能是災難。他本被期望解決“回調金字塔的噩夢”,但反而他們總以困惑而告終。(以及我想把它叫做“回調魔域”。這對本文并無影響,我只 是喜歡印第安納瓊斯)。(譯者注:魔域奇兵(Temple of Doom)是奪寶奇兵的第二部,作者此處在玩梗...)

盡管 promises 確有幫助,但它比普通的回調復雜多了。使用回調,你只需要傳遞一個函數,也許在其中又插入了另一個函數。但使用 Promise 的話,函數更多了。

Promise 鏈可能會很讓人困惑,因為異常、普通的 JS 值和 Promise 都會不同地影響它。設置更復雜的流程也可能會很困難,因為你需要變戲法似的處理多個 Promise 以及它們的返回值。

而且,錯誤處理也是個主題。Promise 的默認行為十分方便:未處理的異常會被忽略,因為很顯然,寫這份代碼的人討厭所有人并且想你享受額外的愉悅的 debug 時間。

但 Promise 是未來。新的異步 API 都傾向于變為基于 Promise 的。新的 JavaScript 特性如 async/await 也是基于 Promise 的。

這就意味著,你越熟悉 Promise,你對未來準備越充分 —— 更別提使用得當的話,盡管復雜,Promise 是非常方便的。

正因為這點的重要性,以及我時常收到的關于 Promise 的問題,我為你們把關于 Promise 最佳的資料集合成了一個列表!

在下面你會發現大量 Promise 的資料,從基礎到超深度!

1. 起步

David Walsh 寫的這篇 Promise 文章 是極佳的入門讀物。它很好地概括了 Promise 是什么以及它們是如何工作的,并提供了實例。

2. 深度理解 Promise

想更深度地理解 Promise 是如何工作的話,Pony Foo 上的這篇文章很棒。它也提供了大量關于如何使用與 Promise 相關的函數的例子。

如果你對鏈式的 Promise 如何工作抱有疑問的話,可視化它會很有幫助。這兒有一個工具能用來獲取 Promise 鏈工作機制的圖像表示。

3. 關于 Promise 的免費章節

想要一份 Promise 的完全解讀,包含許多實例甚至還有需要避免的常見錯誤,可讀探索 ES6 之用于異步編程的 Promise

另一個有大量實例的完全解讀資源是這本 YDKJS(你不知道的 JavaScript)的異步與性能章節。

4. 參考材料 / 快捷信息

如果想要快速參考,MDN 無與倫比。如果你需要快速地查閱某些東西的工作原理,或者一個函數的資料,比如查閱它的參數信息,MDN Promise 參考資料 會是我的不二選擇。

5. 常見錯誤與反模式

開發者們在使用 Promises 經常會犯一些常見的錯誤。想要一覽這些錯誤,并獲得替代方案的實例的話,讀 Tao of Code 上的這篇 Promise 反模式吧。

6. Promise 如何工作

你想知道知道 Promise 實際上是怎么樣工作的嗎?Promise 是怎么做到 Promise 的?那就讀這篇 Promise 細枝末節吧,該文一步步地用純 JavaScript 實現了 Promise。

7. Promise 高級用法

盡管標準的 Promise 很有用,但更為復雜的應用的需要不止于此。Bluebird 提供了大量 Promise 相關的功能,能大大簡化復雜的使用。

YDKJS 的作者 Kyle Simpson 的 Asynquence 也是可選方案。它支持了很多有趣的特性,多少有點像 Bluebird。

8. Promise 單元測試

最后,但同樣非常重要的,當你想用 promise 來測試代碼時,就來讀我的 JavaScript Promise 與單元測試權威指南)吧。

最后

本文應該覆蓋了相當多想象范圍內的 Promise 相關的場景。你還有其他覺得有幫助的資源嗎?寫在評論里吧!

 

來自:http://www.zcfy.cc/article/the-best-resources-to-learn-about-javascript-promises-codeutopia-1040.html

 本文由用戶 hubuke 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!