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


Node.js events.defaultMaxListeners用法及代码示例

events.defaultMaxListeners

添加于:v0.11.2

默认情况下,最多可以为任何单个事件注册 10 侦听器。可以使用 emitter.setMaxListeners(n) 方法为单个 EventEmitter 实例更改此限制。要更改所有EventEmitter 实例的默认值,可以使用events.defaultMaxListeners 属性。如果此值不是正数,则会抛出 RangeError

设置 events.defaultMaxListeners 时要小心,因为更改会影响所有 EventEmitter 实例,包括在进行更改之前创建的实例。但是,调用 emitter.setMaxListeners(n) 仍然优先于 events.defaultMaxListeners

这不是硬性限制。 EventEmitter 实例将允许添加更多侦听器,但会向 stderr 输出跟踪警告,指示已检测到“可能的 EventEmitter 内存泄漏”。对于任何单个 EventEmitter ,可以使用 emitter.getMaxListeners()emitter.setMaxListeners() 方法来暂时避免此警告:

emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
  // do stuff
  emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
});

--trace-warnings 命令行 标志可用于显示此类警告的堆栈跟踪。

发出的警告可以使用 process.on('warning') 进行检查,并将具有额外的 emittertypecount 属性,分别指事件发射器实例、事件名称和附加侦听器的数量。其 name 属性设置为 'MaxListenersExceededWarning'

相关用法


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