當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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