2 回答

TA貢獻1825條經(jīng)驗 獲得超4個贊
不,它沒有阻塞。
async
await
函數(shù)在執(zhí)行承諾時進入睡眠狀態(tài)。控制權(quán)交還給調(diào)用函數(shù)(該函數(shù)獲取從async
函數(shù)返回的未解決的 Promise)。
(當然,如果updater
是阻塞,那么它仍然會阻塞)。

TA貢獻1829條經(jīng)驗 獲得超13個贊
正如您通過運行此示例所看到的,該函數(shù)將是非阻塞的。這就是異步等待的本質(zhì)。
function asyncAction(message) {
console.log("asyncAction start: " + message)
return new Promise ( (res, err) => {
setTimeout( () => res("done"),2000)
}
)
console.log("asyncAction complete: " + message)
}
async function asyncActions() {
await asyncAction("1")
console.log("1 done")
await asyncAction("2")
console.log("2 done")
await asyncAction("3")
console.log("3 done")
}
console.log("program start")
asyncActions()
console.log("program complete")
添加回答
舉報