用過 Promise,但是總是有點似懂非懂的感覺,也看過很多文章,還是搞不懂 Promise的 實現(xiàn)原理,后面自己邊看文章,邊調(diào)試代碼,終于慢慢的有感覺了,下面就按自己的理解來實現(xiàn)一個 Promise。
已將每一步的代碼都放在了 github 上,方便大家閱讀。如果覺得好的話,歡迎star。
想要完全理解代碼,需要理解 this 和閉包的含義。
Promise是什么
簡單來說,Promise 主要就是為了解決異步回調(diào)的問題。用 Promise 來處理異步回調(diào)使得代碼層次清晰,便于理解,且更加容易維護(hù)。其主流規(guī)范目前主要是 Promises/A+ 。對于 Promise 用法不熟悉的,可以參看我的這篇文章——es6學(xué)習(xí)筆記5--promise,理解了再來看這篇文章,會對你有很大幫助的。
在開始前,我們先寫一個 promise 應(yīng)用場景來體會下 promise 的作用。目前谷歌和火狐已經(jīng)支持 es6 的 promise。我們采用 setTimeout 來模擬異步的運行,具體代碼如下: