在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ promise的運(yùn)行結(jié)果順序

promise的運(yùn)行結(jié)果順序

請(qǐng)教一下為什么這段代碼的運(yùn)行結(jié)果是這樣的
1首先被輸出
兩秒后,2,3,4同時(shí)被輸出
然后又過了兩秒11被輸出
不太理解,在火狐和chrome的調(diào)試上都是這個(gè)樣子的
clipboard.png

回答
編輯回答
遲月

Promise實(shí)例中的console.log()還是同步,resolve()的調(diào)用才是真正的開始了異步。你可以在Promise的實(shí)例前后分別加一個(gè)console.log()查看一下,有興趣可以看一下源碼。

2018年7月27日 21:55
編輯回答
懶豬

promise有三種狀態(tài):pending(進(jìn)行中)、fulfilled(已成功,也就是resolved)和rejected(已失?。?。當(dāng)你生成一個(gè)Promise實(shí)例的時(shí)候,傳入的方法會(huì)先執(zhí)行,也就是輸出1。兩秒后,調(diào)用了resovle方法,改變了promise的狀態(tài),執(zhí)行后面的第一個(gè)then方法中的回調(diào)。then方法,在沒有返回promise實(shí)例的情況下,默認(rèn)返回resolved狀態(tài)的promise,因此,會(huì)緊跟著執(zhí)行后續(xù)then方法中的代碼,也就是處處2,3,4。在最后的一個(gè)then方法中因?yàn)槭嵌〞r(shí)器,會(huì)在11秒之后執(zhí)行,所以會(huì)在11秒后,輸出11。
而前面幾個(gè)then方法中的定時(shí)器,其實(shí)是沒用的。因?yàn)?,每個(gè)promise在resolve的時(shí)候,并沒有傳入傳遞的參數(shù),就和setTimeout(undefined, 0)一樣,并不會(huì)執(zhí)行什么。

2017年10月5日 19:59
編輯回答
久不遇

then 中的 callback 是接收 Promise 的 resolve 值作為參數(shù),而不是 resolve 和 reject 函數(shù)。
所以,除第一個(gè) function(resolve, reject) 之外,后面的所有 resolve、reject 都是 undefined。

2018年8月7日 16:12