当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js proces 'rejectionHandled'事件用法及代码示例


事件:'rejectionHandled'

添加于:v1.4.1

参数

每当 Promise 被拒绝并且在 Node.js 事件循环的一圈之后附加了错误处理程序(例如使用 promise.catch() )时,就会发出 'rejectionHandled' 事件。

Promise 对象之前会在 'unhandledRejection' 事件中发出,但在处理过程中获得了拒绝处理程序。

对于始终可以处理拒绝的Promise 链,没有顶层的概念。由于本质上是异步的,Promise 拒绝可以在未来的时间点处理,可能比发出 'unhandledRejection' 事件所需的事件循环轮次晚得多。

另一种表述方式是,与同步代码中存在未处理异常的ever-growing 列表不同,Promises 可以有未处理拒绝的growing-and-shrinking 列表。

在同步代码中,当未处理的异常列表增加时,会发出 'uncaughtException' 事件。

在异步代码中,当未处理的拒绝列表增加时会发出 'unhandledRejection' 事件,而当未处理的拒绝列表缩小时会发出 'rejectionHandled' 事件。

import process from 'node:process';

const unhandledRejections = new Map();
process.on('unhandledRejection', (reason, promise) => {
  unhandledRejections.set(promise, reason);
});
process.on('rejectionHandled', (promise) => {
  unhandledRejections.delete(promise);
});const process = require('node:process');

const unhandledRejections = new Map();
process.on('unhandledRejection', (reason, promise) => {
  unhandledRejections.set(promise, reason);
});
process.on('rejectionHandled', (promise) => {
  unhandledRejections.delete(promise);
});

在此示例中,unhandledRejections Map 将随着时间的推移而增长和缩小,反映开始未处理然后处理的拒绝。可以定期在错误日志中记录此类错误(这可能是long-running 应用程序的最佳选择)或在进程退出时(这可能对脚本最方便)。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品  'rejectionHandled'事件。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。