Promise执行输入问题详解
作者:
月_关 | 来源:发表于
2021-07-30 17:30 被阅读0次Promise.resolve().then(() => {
console.log(0)
return Promise.resolve(4)
}).then(res => {
console.log(res)
})
Promise.resolve().then(() => {
console.log(1)
}).then(() => {
console.log(2)
}).then(() => {
console.log(3)
}).then(() => {
console.log(5)
}).then(() => {
console.log(6)
}).then(() => {
console.log(7)
}).then(() => {
console.log(8)
})
// 0 1 2 3 4 5 6 7 8
// 宏任务
// 执行第一个宏任务promise.resolve,then里面的, () => {
// console.log(0)
// return Promise.resolve(4)
// } 进入微任务队列
// 执行第二个宏任务promise.resolve,then里面的, () => {
// console.log(1)
// } 进入微任务队列, 这时候宏任务执行完了,微任务队列有俩个任务
// 微任务
// () => {
// console.log(0)
// return Promise.resolve(4)
// } 执行,输出0, 注册一个job, 当执行栈为空的时候(也可以理解为本轮微任务队列为空),job进入执行队列
// () => {
// console.log(1)
// } 执行,输出1,下一个then回调推入微任务队列, 这个时候本轮执行微任务队列空了,job进入队列
// 所以执行栈里面现在是
// () => {
// console.log(2)
// } 执行,输入2,下一个then回调推入微任务队列
// job 执行,res => {
// console.log(res)
// }推入微任务队列
// 所以执行栈里面现在是
// () => {
// console.log(3)
// } 执行,输入3,下一个then回调推入微任务队列
// res => {
// console.log(res)
// } 执行, 输入4
// 之后就是then的;链式调用5 6 7 8
本文标题:Promise执行输入问题详解
本文链接:https://www.haomeiwen.com/subject/ovdcvltx.html
网友评论