2 回答

TA贡献1825条经验 获得超4个赞
不,它没有阻塞。
async
await
函数在执行承诺时进入睡眠状态。控制权交还给调用函数(该函数获取从async
函数返回的未解决的 Promise)。
(当然,如果updater
是阻塞,那么它仍然会阻塞)。

TA贡献1829条经验 获得超13个赞
正如您通过运行此示例所看到的,该函数将是非阻塞的。这就是异步等待的本质。
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")
添加回答
举报