<script>
async function async1(){
console.log(1);
await async2();
console.log(2);
}
async function async2(){
console.log(3);
}
console.log(4);
setTimeout(function(){
console.log(5);
},0)
async1();
new Promise(function (reslove){
console.log(6);
reslove()
}).then(function(){
console.log(7);
})
console.log(8);
</script>
图解
打印出 4 1 3 6
发现了一个.then微任务
将其推入到script标签宏任务中
执行打印到4 1 3 6 8 之后 script中宏任务的同步代码与async1微任务已经完成,将其弹出后。执行async2微任务
打印出2 async2微任务完成将其弹出 执行.then微任务
打印出7后,.then微任务执行完毕弹出 最后执行settimeout宏函数
打印出 5
总体输出结果:
题目来自于牛客网集训营 4.7 异步