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

async/await疑问:为何await后的console.log完全不打印?

问题原因分析

你的代码里,await 等待的那个 Promise 始终没有被决议(resolve),导致异步流程一直卡在这个等待环节,后面的 console.log("Last") 自然永远不会执行。

具体来说,你创建 Promise 时传入的 executor 函数里,只在 setTimeout 里打印了 "Async!!!",但完全没调用 resolve() 方法。await 的逻辑是:必须等到 Promise 对象的状态从 pending 变为 fulfilled(调用resolve)或者 rejected(调用reject),才会继续执行后面的代码。你的这个 Promise 一直处于 pending 状态,所以后续代码被永久阻塞了。

修正后的代码示例

如果要让 "Last" 正常输出,需要在 setTimeout 里调用 resolve():

async function printMe() {
  console.log("First")
  await new Promise (resolve => {
    setTimeout(() => {
      console.log("Async!!!")
      resolve() // 调用resolve,让Promise状态变为fulfilled
    }, 3000)
  })
  console.log("Last")
}

printMe()

这样,3秒后打印完 "Async!!!",Promise 被决议,await 结束等待,后续的 "Last" 就会正常输出了。

内容的提问来源于stack exchange,提问作者Romi Tsimerman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:10:04