首页 > 解决方案 > 如果脚本退出 nodejs 之后返回几个错误,我想创建一个 unhandledRejection

问题描述

你好我想创建一个 unhandledRejection 如果它在脚本退出后返回几个错误我会解释为什么

process.on ('unhandledRejection', (reason, p) => {
  console.error ('Unhandled Rejection at: Promise', p, 'reason:', reason);
  run();
});

在这里我的脚本会在出现错误的情况下重新启动,但我希望它在之后出现多个错误时停止如果你有想法我不知道该怎么做

这是一个脚本停止错误的示例:

process.on ('unhandledRejection', (reason, p) => {
  console.error ('Unhandled Rejection at: Promise', p, 'reason:', reason);
  process.exit();
});

标签: node.js

解决方案


您可以使用布尔值(标志),这样您的“运行”只运行一次。但是,如果你连续有两个错误,它不太可能完成,所以如果还有其他错误,你需要在第二个、第三个等上做某种“等待”。

let flagOneUnhandledReject = false;
let finalProcess = Promise.resolve();
process.on ('unhandledRejection', async (reason, p) => {
  console.error ('Unhandled Rejection at: Promise', p, 'reason:', reason);
  if(!flagOneUnhandledReject){
    flagOneUnhandledReject = true
    finalProcess = run(); // run() needs to return a promise
  }else{
    await finalProcess; // make sure finalProcess doesn't throw any errors
    process.exit();
  }
});

推荐阅读