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

为什么JavaScript异步函数执行中途停止?

代码仅打印“Hello world”的原因分析

这段代码的问题核心出在第一个await对应的Promise上:

  • 创建new Promise(() => { console.log('Hello world') })时,传入的执行器函数里没有调用resolve或reject方法,导致这个Promise始终处于pending(等待)状态。
  • await关键字的逻辑是:必须等待Promise的状态变为fulfilled(已完成)或rejected(已拒绝),才会继续执行后续代码。
  • 由于第一个Promise一直卡在pending状态,await会无限期等待,后面的console.log('debug1')、第二个Promise以及console.log('finish')永远没有执行机会。

如果要让后续代码正常运行,只需在第一个Promise的执行器里调用resolve即可,修改后的代码示例:

async function main () {
    await new Promise((resolve) => {
        console.log('Hello world')
        resolve()
    })
    console.log('debug1')
    await new Promise(r => setTimeout(r, 1000));
    console.log('finish')
}

main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:24:50