【问题标题】:Node.js command line script sometimes does not terminateNode.js 命令行脚本有时不会终止
【发布时间】:2018-10-17 18:14:07
【问题描述】:

我有一个带有异步主方法的节点 js 脚本。有时脚本会正常终止,有时会挂起。

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

main()

有谁知道为什么这个脚本有时会挂起?尽管它似乎已经运行完成,但它并没有终止。

【问题讨论】:

  • 根据您在此处提供的内容无法确定,但通常如果您未能解决或拒绝所有承诺和/或未适当致电process.exit(),则会发生这种情况。
  • 是的,这种情况经常发生在我身上——即使没有明确返回任何内容,您的异步函数也会固有地返回一个承诺。所以如果你添加 main().then(() => process.exit()) 它应该总是终止。

标签: node.js babeljs babel-node


【解决方案1】:

因为你的函数是async,所以你需要在它完成时显式地终止它:

main().then(() => process.exit())

【讨论】:

    猜你喜欢
    • 2016-10-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多