首先看题
setTimeout(() => {
console.log("0");
}, 0)
new Promise((resolve, reject) => {
console.log("1");
resolve()
}).then(() => {
console.log("2");
new Promise((resolve, reject) => {
console.log("3");
resolve()
}).then(() => {
console.log("4");
}).then(() => {
console.log("5");
})
}).then(() => {
console.log("6");
})
new Promise((resolve, reject) => {
console.log("7");
resolve()
}).then(() => {
console.log(8);
})
打印的顺序为
1
7
2
3
8
4
6
5
0
setTimeout为宏观任务最后打印 0 没毛病
new Promise 打印的 1 是在栈中执行,由此可得 1,7 最先打印。
接着调用第一个 new Promise 里面的resolve() 微任务打印2, 3
接着调用第三个 new Promise 里面的resolve() 微任务打印8
接着调用第二个 new Promise 里面的resolve() 微任务打印4
接着打印 6 打印5 最后打印0