async function async1() {
console.log("async1 start");
await async2();
console.log("async111 end"); // 为什么在 console.log("start")后执行
}
async function async2() {
setTimeout(() => {
console.log("timer")
}, 0)
console.log("async2")
}
async1()
console.log("start")
输出结果
async1 start
async2
start
async111 end
undefined
timer
第3个输出结果为什么是 start 而不是 async111 end
为什么 async1 函数还没有执行到第二个 console.log 就输出了调用 async1() 函数后面的 console.log("start")?
async/await 是Promise的语法糖。
Promise.then 是微任务,是在执行完一个宏任务队列后再清空执行的。