setTimeout(function () {
console.log(1);
}, 100);
setTimeout(function () {
console.log(2);
}, 0)
Promise.resolve(
console.log(3)
).then(
() => { console.log(4) }
)
async function async1() {
console.log(5)
await async2()
console.log(6)
}
async function async2() {
console.log(7)
}
async1()
console.log(8)
// 3 5 7 8 4 6 2 1
//宏任务:setTimout会被放入一个数组中等到最后执行,并且执行顺序和等待事件有关 ,所以最后是宏任务[2,1]
//遇到Promsie()同步同步任务,立即执行 3
//微任务:Promise.then依次推入同步队列[4]并执行,继续向下执行 5
//await是直接执行的,7
//微任务:await后面的代码会被放入同步队列[4,6],继续向下执行8
//因此最总结果是 3 5 7 8 4 6 2 1