You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何await语句后console.log(123)未被调用?技术咨询

问题解答:为何await sleep后代码未执行?

你的代码核心问题是sleep函数返回的Promise从未被resolve。

await的工作逻辑是:必须等待对应的Promise状态变为fulfilled(即调用resolve()方法),才会继续执行await之后的代码。而你写的sleep函数中,setTimeout回调里只执行了console.log("abc"),完全没有调用resolve(),导致这个Promise一直处于pending(等待)状态,await会一直挂起,后面的console.log(123)自然永远不会被执行。

修复方法很简单,在setTimeout的回调里加上resolve()调用,让Promise完成状态切换:

const sleep = ms => new Promise(
  resolve => setTimeout(() => {
    console.log("abc")
    resolve(); // 调用resolve,标记Promise完成
  }, ms)
);

async function start() {
  await sleep(1000)
  console.log(123)  
}
start() 

这样修改后,1秒后会先打印"abc",接着Promise被resolve,await结束等待,后续的console.log(123)就会正常执行了。

内容的提问来源于stack exchange,提问作者Max Pattern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:07:13