From c5cd6b7f3ba7713447d8ad2086c8451156336efd Mon Sep 17 00:00:00 2001 From: Khafra Date: Sun, 19 Mar 2023 08:58:19 -0400 Subject: [PATCH] events: add getMaxListeners method PR-URL: https://github.com/nodejs/node/pull/47039 Reviewed-By: Debadree Chatterjee Reviewed-By: Benjamin Gruenbaum --- doc/api/events.md | 52 ++++++++++++++++++++ lib/events.js | 18 +++++++ test/parallel/test-events-getmaxlisteners.js | 19 +++++++ 3 files changed, 89 insertions(+) create mode 100644 test/parallel/test-events-getmaxlisteners.js diff --git a/doc/api/events.md b/doc/api/events.md index 6f009d6bc7d4cd..f5a17224693360 100644 --- a/doc/api/events.md +++ b/doc/api/events.md @@ -1266,6 +1266,58 @@ const { getEventListeners, EventEmitter } = require('node:events'); } ``` +## `events.getMaxListeners(emitterOrTarget)` + + + +* `emitterOrTarget` {EventEmitter|EventTarget} +* Returns: {number} + +Returns the currently set max amount of listeners. + +For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on +the emitter. + +For `EventTarget`s this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning. + +```mjs +import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events'; + +{ + const ee = new EventEmitter(); + console.log(getMaxListeners(ee)); // 10 + setMaxListeners(11, ee); + console.log(getMaxListeners(ee)); // 11 +} +{ + const et = new EventTarget(); + console.log(getMaxListeners(et)); // 10 + setMaxListeners(11, et); + console.log(getMaxListeners(et)); // 11 +} +``` + +```cjs +const { getMaxListeners, setMaxListeners, EventEmitter } = require('node:events'); + +{ + const ee = new EventEmitter(); + console.log(getMaxListeners(ee)); // 10 + setMaxListeners(11, ee); + console.log(getMaxListeners(ee)); // 11 +} +{ + const et = new EventTarget(); + console.log(getMaxListeners(et)); // 10 + setMaxListeners(11, et); + console.log(getMaxListeners(et)); // 11 +} +``` + ## `events.once(emitter, name[, options])`