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