为何JavaScript中await会等待Promise resolve?代码逻辑疑问
为什么
console.log("world")会等待Promise完成后执行? 这核心是**await关键字的作用**——它专门用来暂停async函数的执行流程,直到它右侧的Promise对象状态变为resolved(已完成),才会继续执行await之后的代码。
拆解你的代码逻辑:
- 调用
main()后,进入这个async函数的执行流程。 - 遇到
await new Promise(...)时,main函数会立刻暂停执行,把程序控制权交还给调用它的上下文。 - 此时Promise内部的
setTimeout开始计时,1秒后触发回调:先打印hello,然后调用resolve(),把这个Promise的状态从pending(等待中)改成resolved。 - 一旦Promise状态变为
resolved,之前暂停的main函数会恢复执行,继续运行await后面的console.log("world")。
简单说,await就是给async函数加了个"暂停等待"的开关,必须等它绑定的Promise完成,才会往下走。
内容的提问来源于stack exchange,提问作者Rohit
相关产品推荐
相关产品推荐

