最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在promise链中调用process.exit()的正确位置

运维笔记admin7浏览0评论

在promise链中调用process.exit()的正确位置

在promise链中调用process.exit()的正确位置

在理解节点进程和承诺链的交互时遇到问题:

doSomethingAsync()
.then()
.then()
.catch()
.finally();

最后介绍了关闭doSomethingAsync()内部打开的数据库连接。

问题:错误中的process.exit(1)在哪个块中正确属于?

  • .catch()中,因为那是错误发生的地方,或者
  • .finally(),因为这是应该发生的最后一件事? (但如果出现错误并且触发了catch(),那么连接是否会被释放)?
  • 无处,因为节点已经知道程序失败了?
回答如下:

如果目标是在发生错误时让应用程序终止,那么我根本不会捕获异常

async function doSomething() {
  try {
    const result = await doSomethingAsync();
    // do something with result  
  } finally {
    // do cleanup
  }
}

使用async / await语法将允许Promise抛出错误,未捕获的异常将终止应用程序。无论是否抛出错误,finally块都将运行。

发布评论

评论列表(0)

  1. 暂无评论