我在 Node.js 中使用 TypeScript。我已将代码简化为以下内容:
async function runPromise(promise: Promise<unknown>) {
await promise
console.log('done')
}
void runPromise(new Promise(() => {
console.log('in promise')
}))
当我运行此命令时,我得到以下输出,然后该过程以 0 退出状态结束:
in promise
因为 Promise 永远不会被解决或拒绝,所以它永远不会运行
console.log('done')
行。
我希望能够处理使用永远不会解析的 Promise 调用 runPromise 的情况。有没有办法让它抛出错误而不是默默退出?我想避免使用某种超时,因为我真的不知道应该花多长时间。
我本来应该问这个问题,但为什么 Node.js 在有未完成的承诺时关闭进程而不是无限期地挂起?我看到关于停止问题的参考。我假设 Node.js 会意识到未完成的承诺,但我发现这一定不是一个有效的假设。
此外,我已经更正了代码,因此 Promise 确实可以解决,但需要相当多的时间来调试,所以我只是试图改进我的 runPromise 函数,使其更加严格并因错误而失败,而不是默默地关闭。我希望将来能够避免此类错误。