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 状态
Promise.resolve().then(() => {
console.log('here') // 然后这里会优先于 p1.then() 输出
})
})
因为 p1 的状态是根据 p2 的状态来决定的嘛,然后啊,我在 p2.then()
里面调用 Promise.resolve().then()
都会比 p1.then()
优先输出。为什么呀?我猜是在下一个事件循环的时候才会去修改 p1 的状态?
有大佬指点一下吗,万分感激~
在同一次循环中检测,但是也是有先后顺序的。