Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save santoshshinde2012/caf0fe45c3a4513bebf3e9b6d9c1e7d2 to your computer and use it in GitHub Desktop.
Save santoshshinde2012/caf0fe45c3a4513bebf3e9b6d9c1e7d2 to your computer and use it in GitHub Desktop.
Essential methods of the EventEmitter

Essential methods of the EventEmitter

[x] on(event, listener)

// Adds a listener to the end of the listeners array for the specified event.
// By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the event listener to the beginning of the listeners array.

const EventEmitter = require('events')

const myEvent = new EventEmitter();

myEvent.on('test', () => console.log('Test from on'));

myEvent.prependListener('test', () => console.log('Test from prependListener'));

myEvent.emit('test');

// Prints:
//   Test from on
//   Test from prependListener

[x] once(event, listener)

// Adds a one time listener for the event. This listener is invoked only the next time the event is fired, after which it is removed.
// Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

const EventEmitter = require('events')

const myEvent = new EventEmitter();

myEvent.once('test', () => console.log('Test from once'));

myEvent.emit('test');

// Prints:
//   Test from once

[x] emit(event, [arg1], [arg2], [...])


// Execute each of the listeners in order with the supplied arguments. Returns true if event had listeners, false otherwise.
// Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

const EventEmitter = require('events')

const myEvent = new EventEmitter();

// First listener
myEvent.on('test', () => {
  console.log('First test listener');
});

// Second listener
myEvent.on('test', (arg1, arg2) => {
  console.log(`Second test listener with parameters ${arg1}, ${arg2}`);
});

// Third listener
myEvent.on('test', (...args) => {
  const parameters = args.join(', ');
  console.log(`Third test listener with parameters ${parameters}`);
});

myEvent.emit('test', 1,2,3);

// Prints : 
// First test listener
// Second test listener with parameters 1, 2
// Third test listener with parameters 1, 2, 3

[x] removeListener(event, listener)

// Remove a listener from the listener array for the specified event.

const EventEmitter = require('events');

const myEvent = new EventEmitter();

const callbackA = () => {
  console.log('A');
  myEvent.removeListener('event', callbackB);
};

const callbackB = () => {
  console.log('B');
};

myEvent.on('event', callbackA);

myEvent.on('event', callbackB);

// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEvent.emit('event');
// Prints:
//   A
//   B

// callbackB is now removed.
// Internal listener array [callbackA]
myEvent.emit('event');
// Prints:
//   A

[x] setMaxListeners(n)

// By default EventEmitters will print a warning if more than 10 listeners are added for a particular event.
// This is a useful default that helps finding memory leaks.

const EventEmitter = require('events')

const myEvent = new EventEmitter();

myEvent.on('test', () => console.log('Test from on'));
myEvent.once('test', () => {
  // do stuff
  console.log('getMaxListeners Before', myEvent.getMaxListeners());
  myEvent.setMaxListeners(Math.max(myEvent.getMaxListeners() - 1, 0));
  console.log('getMaxListeners After', myEvent.getMaxListeners());
});
myEvent.emit('test');

// Prints :
// Test from on
// getMaxListeners Before 10
// getMaxListeners After 9

[x] listeners(event)

// Returns an array of listeners for the specified event.
// Returns a copy of the array of listeners for the event named eventName.

const EventEmitter = require('events')

const myEvent = new EventEmitter();

myEvent.on('test', function testListeners() { console.log('Test the myEvent.listeners'); });
myEvent.emit('test');
const eventListeners = myEvent.listeners('test');
console.log('listeners', eventListeners);

// Prints :
// Test the myEvent.listeners
// listeners [ [Function: testListeners] ]

Visualization of Event Emitter in Node JS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment