2 回答

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

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
正如您通過運(yùn)行此示例所看到的,該函數(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")
添加回答
舉報(bào)