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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。