async await执行顺序问题

    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?
阅读 1.4k
1 个回答

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") 。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题