What is the difference between addListener(event, listener) and on(event, listener) method in node.js?
Here i cannot understand what is the basic difference between these two methods.
var events = require('events');
var eventEmitter = new events.EventEmitter();
var listner1 = function listner1() {
console.log('listner1 executed.');
}
var listner2 = function listner2() {
console.log('listner2 executed.');
}
eventEmitter.addListener('connection', listner1);
eventEmitter.on('connection', listner2);
eventEmitter.emit('connection');
.on()
is exactly the same as .addListener()
in the EventEmitter object.
Straight from the EventEmitter source code:
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
Sleuthing through the GitHub repository, there is this checkin from Jul 3, 2010 that contains the comment: "Experimental: 'on' as alias to 'addListener'".
Update in 2017: The documentation for EventEmitter.prototype.addListener()
now says this:
Alias for
emitter.on(eventName, listener)
.
Yes you can use "removeListener" with with a listener created with "on". Try it.
var events = require('events');
var eventEmitter = new events.EventEmitter();
// listener #1
var listner1 = function listner1() {
console.log('listner1 executed.');
}
// listener #2
var listner2 = function listner2() {
console.log('listner2 executed.');
}
// Bind the connection event with the listner1 function
eventEmitter.addListener('connection', listner1);
// Bind the connection event with the listner2 function
eventEmitter.on('connection', listner2);
var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
// Fire the connection event
eventEmitter.emit('connection');
// Remove the binding of listner1 function
eventEmitter.removeListener('connection', listner2);
console.log("Listner2 will not listen now.");
// Fire the connection event
eventEmitter.emit('connection');
eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
console.log("Program Ended.");
Added in: v10.0.0
emitter.off(eventName, listener)
Alias for emitter.removeListener()