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 的状态?有大佬指点一下吗,万分感激~
1 回答

撒科打诨
TA贡献1934条经验 获得超2个赞
在同一次循环中检测,但是也是有先后顺序的。
... p1.then(data => { console.log('p1')//p1 fulfilled callback}) p2.then(data => { console.log('p2') console.log('p1 status ', p1) // 这里在浏览器输出的是 pending 状态 Promise.resolve()// p3 fulfilled .then(() => {//p3 fulfilled callback console.log('here') // 然后这里会优先于 p1.then() 输出 }) //p1 fulfilled})
添加回答
举报
0/150
提交
取消