function consoleA(){
console.log("A")
}
async function consoleB(){
await consoleA()
console.log("B")
}
(function consoleC(){
consoleB().then(_ => {
console.log("D")
})
console.log("C")
})()
上面代码的打印顺序是A,C,B,D
请问为什么先打印A,还有为什么打印A之后打印C?
await
相当与执行了一个 Promise.then(....)console.log("B")
在 then 里。consoleC 执行,调用 consoleB ,await consoleA(), 打印 "A" ,consoleA 直接返回,await consoleA 把 log("B") 加入执行 task queue ,consoleB 返回,consoleB.then() 把 console.log("D") 加入 task queue ,打印 "C",当前 task 结束。task queue 还有两个任务,一个是 log("B") ,一个是 log("D") 。