
- Node.js - Home
- Node.js - Introduction
- Node.js - Environment Setup
- Node.js - First Application
- Node.js - REPL Terminal
- Node.js - Command Line Options
- Node.js - Package Manager (NPM)
- Node.js - Callbacks Concept
- Node.js - Upload Files
- Node.js - Send an Email
- Node.js - Events
- Node.js - Event Loop
- Node.js - Event Emitter
- Node.js - Debugger
- Node.js - Global Objects
- Node.js - Console
- Node.js - Process
- Node.js - Scaling Application
- Node.js - Packaging
- Node.js - Express Framework
- Node.js - RESTFul API
- Node.js - Buffers
- Node.js - Streams
- Node.js - File System
- Node.js MySQL
- Node.js - MySQL Get Started
- Node.js - MySQL Create Database
- Node.js - MySQL Create Table
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB Get Started
- Node.js - MongoDB Create Database
- Node.js - MongoDB Create Collection
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB Query
- Node.js - MongoDB Sort
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js Modules
- Node.js - Modules
- Node.js - Built-in Modules
- Node.js - Utility Modules
- Node.js - Web Module
NodeJS - emitter.setMaxListeners() Method
The emitter.setMaxListeners() method allows us to modify the limit for the specific EventEmitter instance. By default, the EventEmitter will not allow more than 10 listeners to a particular event, if more than 10 listeners are added the EventEmitter will throw a warning message.
To allow an infinite number of listeners to be added to a specific event, we can set the value to Infinity or 0.
This method belongs to Eventemitter class is an inbuilt class of node:events module.
Syntax
Following is the syntax of the NodeJs emitter.setMaxListeners() method −
emitter.setMaxListeners(n)
Parameters
This method accepts only one parameter as described below.
- n: This parameter will hold the maximum value to be set for the specific EventEmitter instance.
Return value
This method returns a reference to the EventEmitter so that calls can be chained.
Example 1
Following is the basic example of the NodeJs emitter.setMaxListeners() Method.
Initially, we imported the node:events module. Then we passed five listener functions with an eventName myEvent to the emitter.addListener() method. Here we havent set any limit to the particular event. So that if we compile and run the program, 10 will be printed to the output because by default the maximum limit of listeners can be added is 10.
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); myEmitter.addListener('myEvent', function one() { }); myEmitter.addListener('myEvent', function two() { }); myEmitter.addListener('myEvent', function three() { }); myEmitter.addListener('myEvent', function four() { }); myEmitter.addListener('myEvent', function five() { }); console.log(myEmitter.getMaxListeners('myEvent'));
Output
The above program produces the following output −
10
Example 2
In this program, We called the emitter.setMaxListener() method, but we havent passed any parameter to it. If we compile and run the program, it will throw an error message to the output.
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); myEmitter.setMaxListeners(); myEmitter.addListener('myEvent', function one() { }); myEmitter.addListener('myEvent', function two() { }); myEmitter.addListener('myEvent', function three() { }); myEmitter.addListener('myEvent', function four() { }); myEmitter.addListener('myEvent', function five() { }); console.log(myEmitter.getMaxListeners('myEvent'));
Output
The above program produces the following output −
node:events:397 throw new ERR_OUT_OF_RANGE('n', 'a non-negative number', n); ^ RangeError [ERR_OUT_OF_RANGE]: The value of "n" is out of range. It must be a non-negative number. Received undefined at new NodeError (node:internal/errors:371:5) at EventEmitter.setMaxListeners (node:events:397:11) at Object.(/index.js:4:11) at Module._compile (node:internal/modules/cjs/loader:1103:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47 { code: 'ERR_OUT_OF_RANGE' }
Example 3
We called the emitter.setMaxListener() method, but we passed a negative number as a parameter to it. it will throw an error message to the output.
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); myEmitter.setMaxListeners(-3); myEmitter.addListener('myEvent', function one() { }); myEmitter.addListener('myEvent', function two() { }); myEmitter.addListener('myEvent', function three() { }); myEmitter.addListener('myEvent', function four() { }); myEmitter.addListener('myEvent', function five() { }); console.log(myEmitter.getMaxListeners('myEvent'));
Output
The above program produces the following output −
node:events:300 throw new ERR_OUT_OF_RANGE('n', 'a non-negative number', n); ^ RangeError [ERR_OUT_OF_RANGE]: The value of "n" is out of range. It must be a non-negative number. Received -2 at new NodeError (node:internal/errors:371:5) at EventEmitter.setMaxListeners (node:events:300:13) at Object.(/index.js:6:1) at Module._compile (node:internal/modules/cjs/loader:1103:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47 { code: 'ERR_OUT_OF_RANGE' }
Example 4
In this program, we added 11 listeners to the specific event myEvent, By default, EventEmitter will accept only 10 listeners at maximum for a particular event. When we compile and run the program below, the EventEmitter will throw a warning message to the output.
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); myEmitter.addListener('myEvent', function one() { }); myEmitter.addListener('myEvent', function two() { }); myEmitter.addListener('myEvent', function three() { }); myEmitter.addListener('myEvent', function four() { }); myEmitter.addListener('myEvent', function five() { }); myEmitter.addListener('myEvent', function six() { }); myEmitter.addListener('myEvent', function seven() { }); myEmitter.addListener('myEvent', function eight() { }); myEmitter.addListener('myEvent', function nine() { }); myEmitter.addListener('myEvent', function ten() { }); myEmitter.addListener('myEvent', function eleven() { }); console.log(myEmitter.getMaxListeners('myEvent'));
Output
The above program produces the following output −
10 (node:11610) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 myEvent listeners added to [EventEmitter]. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created)
Example 5
In the following program, we added 3 listeners to the specific event myEvent. we called the emitter.setMaxListener() method and we passed a non-negative number as a parameter to it. We added 3 listeners and the limit we passed is also 3. It will return 3 to the output as the maximum limit is 3.
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); myEmitter.setMaxListeners(3); myEmitter.addListener('myEvent', function one() { }); myEmitter.addListener('myEvent', function two() { }); myEmitter.addListener('myEvent', function three() { }); console.log(myEmitter.getMaxListeners('myEvent'));
Output
The above program produces the following output −
3