我們知道Promise.then(callback)
中callback
調(diào)用的時(shí)間點(diǎn)為Promise
狀態(tài)變?yōu)?code>resolved時(shí)
new Promise((resolve, reject) => {
do something
...
resolve(value)
}).then((res) => {
do other things
...
}).then(callback)
如上,我想要驗(yàn)證第二個(gè)then
中callback
的調(diào)用是在第一個(gè)then
中的回調(diào)執(zhí)行完之后碾篡,也就是驗(yàn)證第一個(gè)then返回的Promise的resolve時(shí)間點(diǎn)是在它執(zhí)行完回調(diào)之后
代碼如下
Promise.resolve().then(() => {
for (let i = 1; i < 100; i++) console.log(1)
}).then(() => {
console.log(2)
})
// expect:
// 1(99)
// 2
其實(shí)扛施,當(dāng)我們開始思考語言機(jī)制的時(shí)候畔乙,更好的做法是看 源碼
image.png