异步函数在中间停止

问题描述 投票:0回答:1

为什么这段代码停在中间?

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

main()

这段代码只打印“Hello world”,而不打印“debug1”或“finish”,为什么?

javascript async-await
1个回答
1
投票

您没有解决第一个承诺,因此代码卡在等待承诺解决的过程中。要修复它,请像这样解决承诺:

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()

© www.soinside.com 2019 - 2024. All rights reserved.