events.defaultMaxListeners
默认情况下,最多可以为任何单个事件注册 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')
emitter
、 type
和 count
属性,分别指事件发射器实例、事件名称和附加侦听器的数量。其 name
属性设置为 'MaxListenersExceededWarning'
。
相关用法
- Node.js events.setMaxListeners(n[, ...eventTargets])用法及代码示例
- Node.js events.listenerCount(emitter, eventName)用法及代码示例
- Node.js events.getEventListeners(emitterOrTarget, eventName)用法及代码示例
- Node.js events.once(emitter, name[, options])用法及代码示例
- Node.js events.on(emitter, eventName[, options])用法及代码示例
- Node.js EventEmitter emitter.eventNames()用法及代码示例
- Node.js EventEmitter emitter[Symbol.for('nodejs.rejection')](err, eventName[, ...args])用法及代码示例
- Node.js ecdh.getPrivateKey()用法及代码示例
- Node.js EventEmitter emitter.listeners(eventName)用法及代码示例
- Node.js EventEmitter emitter.rawListeners(eventName)用法及代码示例
- Node.js EventEmitter emitter.removeListener(eventName, listener)用法及代码示例
- Node.js EventEmitter emitter.emit(eventName[, ...args])用法及代码示例
- Node.js ecdh.generateKeys()用法及代码示例
- Node.js emitter.eventNames()用法及代码示例
- Node.js EventEmitter emitter.once(eventName, listener)用法及代码示例
- Node.js ecdh.computeSecret()用法及代码示例
- Node.js ecdh.setPrivateKey()用法及代码示例
- Node.js EventEmitter emitter.on(eventName, listener)用法及代码示例
- Node.js ecdh.setPublicKey()用法及代码示例
- Node.js ecdh.getPublicKey()用法及代码示例
- Node.js EventEmitter emitter.prependListener(eventName, listener)用法及代码示例
- Node.js EventEmitter emitter.prependOnceListener(eventName, listener)用法及代码示例
- Node.js ServerHttp2Stream http2stream.pushStream(headers[, options], callback)用法及代码示例
- Node.js http2.Http2ServerRequest request.url用法及代码示例
- Node.js request.socket用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 events.defaultMaxListeners。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。