本作品采用知識共享署名 4.0 國際許可協(xié)議進行許可。轉(zhuǎn)載聯(lián)系作者并保留聲明頭部與原文鏈接https://luzeshu.com/blog/bluebirdsource
本博客同步在http://www.cnblogs.com/papertree/p/7163870.html
時隔一年,把之前結尾還有一部分未完成的博客完成。版本2.9。具體忘了哪個revision number。不過原理差不多。
1. 帶上幾個問題看源碼
1. promise鏈是如何實現(xiàn)的?
2. promise對象如何變成fulfill狀態(tài),并觸發(fā)promise鏈條的后續(xù)函數(shù)?new Promise和Promise.resolve() 有何不同?
*3. 為什么每執(zhí)行.then就創(chuàng)建一個新的Promise對象,而不能使用第一個promise依次.then?
4. 如何對throw Error 和 reject進行加工
第3個問題不是在使用Promise的過程中提出的問題,而是看源碼過程中針對源碼實現(xiàn)提出的問題。
分兩條主線來講解:
第3節(jié):回調(diào)函數(shù)的設置、promise鏈條的保存
第4節(jié):promise對象的解決(設置為rejected、fulfilled)、鏈條的遷移