Node.js 处理 unhandledPromiseRejection 事件
进程是 Node.js 中的全局对象,它跟踪并包含在机器上特定时间执行的特定 node.js 进程的所有信息。
未处理的拒绝 只要未处理承诺拒绝,就会发出事件。 NodeJS 警告控制台有关UnhandledPromiseRejectionWarning并立即终止进程。 NodeJS 进程全局有一个unhandledRejection事件。当unhandledRejection发生并且在 Promise 链中没有处理程序来处理它时,会触发此事件。
句法:
process.on("unhandledRejection", callbackfunction)
参数:此方法采用以下两个参数。
- unhandledRejection:进程中发出事件的名称。
- callbackfunction:是事件的事件处理函数。
返回类型:此方法的返回类型为 void。
示例 1:注册unhandledRejection侦听器的基本示例。
index.js
// The unhandledRejection listener
process.on('unhandledRejection', error => {
console.error('unhandledRejection', error);
});
// Reject a promise
Promise.reject('Invalid password');
index.js
// The unhandledRejection listener
process.on('unhandledRejection', error => {
// Won't execute
console.error('unhandledRejection', error);
});
// Reject a promise
Promise.reject('Invalid password')
.catch(err => console.error(err))
使用以下命令运行index.js文件:
node index.js
输出:
unhandledRejection Invalid password
示例 2:为了证明 unhandledRejection监听器只会在链中没有 Promise 拒绝处理程序时执行。
index.js
// The unhandledRejection listener
process.on('unhandledRejection', error => {
// Won't execute
console.error('unhandledRejection', error);
});
// Reject a promise
Promise.reject('Invalid password')
.catch(err => console.error(err))
使用以下命令运行index.js文件:
node index.js
输出:
Invalid password
注意:如果您使用侦听器或使用者函数处理unhandledRejection ,则控制台的默认警告(上述示例中的UnhandledPromiseRejectionWarning )将不会打印到控制台。
参考: https://nodejs.org/api/process.html#process_event_unhandledrejection