Node.js命令行脚本有时无法终止。

8

我有一个使用异步主方法的Node.js脚本。有时脚本能够正常终止,但有时会出现挂起的情况。

const main = async () => {
    let updates = []
    // ... add a bunch of promises to updates
    await Promise.all(updates)
} 

main()

有人知道为什么这个脚本有时会停顿吗?虽然它似乎已经运行完成,但它并没有终止。


根据您提供的信息,很难确定具体原因,但通常这种情况发生在您未能解决或拒绝所有承诺,并且未适当调用 process.exit() 的情况下。 - Paul
1
是的,这种情况经常发生——即使没有明确返回任何内容,您的异步函数本质上也会返回一个 Promise。因此,如果您添加 main().then(() => process.exit()),它应该总是终止。 - axanpi
1个回答

8
因为您的函数是 async,所以在完成时需要显式终止它:
main().then(() => process.exit())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接