📜  Node.js 处理 unhandledPromiseRejection 事件

📅  最后修改于: 2022-05-13 01:56:44.875000             🧑  作者: Mango

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