var p2 = new Promise(resolve => {
setTimeout(() => {
resolve()
}, 2000)
})var p1 = new Promise(resolve => {
resolve(p2)
})
p1.then(data => { console.log('p1')
})
p2.then(data => { console.log('p2') console.log('p1 status ', p1) // 這里在瀏覽器輸出的是 pending 狀態(tài)
Promise.resolve().then(() => { console.log('here') // 然后這里會(huì)優(yōu)先于 p1.then() 輸出
})
})因?yàn)?p1 的狀態(tài)是根據(jù) p2 的狀態(tài)來(lái)決定的嘛,然后啊,我在 p2.then() 里面調(diào)用 Promise.resolve().then() 都會(huì)比 p1.then() 優(yōu)先輸出。為什么呀?我猜是在下一個(gè)事件循環(huán)的時(shí)候才會(huì)去修改 p1 的狀態(tài)?有大佬指點(diǎn)一下嗎,萬(wàn)分感激~
什么時(shí)候會(huì)檢查 Promise 的狀態(tài)呀?
侃侃爾雅
2018-11-13 19:52:25