先看一段代碼:
async function a2() {
console.log(3)
}
async function a1() {
console.log(1)
await a2();
console.log(2);
}
console.log(4)
a1()
setTimeout(()=> {
console.log(5)
})
new Promise((resolve, reject)=>{
console.log(6)
resolve()
}).then((data) => {
console.log(7)
})
console.log(8)
上面這段代碼,你知道輸出的順序是什麼嗎?
來試着寫一下
來我們來看下輸出:

然後我對上面的代碼稍微改動下:
function a2() {
console.log(3)
}
async function a1() {
console.log(1)
await a2();
console.log(2);
}
console.log(4)
a1()
setTimeout(()=> {
console.log(5)
})
new Promise((resolve, reject)=>{
console.log(6)
resolve()
}).then((data) => {
console.log(7)
})
console.log(8)
我将a2的async去掉了,輸出的順序有變動麼,來我們來看下結果:
我們發現,7和2的位置調換了,為什麼呢?
我突然發現,這個答案可以這裡找到答案,就在這裡寫下入口:async、await、Promise、setTimeout執行順序