Performance Zone is brought to you in partnership with:

A GNU/Linux g33k CLI+Web loving computer polyglot. Hemanth is a DZone MVB and is not an employee of DZone and has posted 16 posts at DZone. You can read more from them at their website. View Full User Profile

EventEmitter in node.js

12.18.2012
| 1780 views |
  • submit to reddit

Sometime back I had pawed at Making promises with javascript, but the node school of thought offers an attractive pattern of EventEmitters. 

EventEmitters are very much similar to PubSub, but are more tightly coupled and give more control.

I shall try to demonstrate these EventEmiters with few simple code snippets.

// Let's make a child ;)
var child = new (require('events').EventEmitter);
 
// Child's response 
child.once("born",function(){console.log("Say : Hello World!");});
child.on("cry",function(){console.log("The child is crying!");});
child.on("laugh",function(){console.log("Awe that is cute :)");});
 
//By default listener limit is 10, it can be increased using:
child.setMaxListeners(100);
 
// Let the events emmit.
child.emit("born");
child.emit("cry");
child.emit("laugh");
 
if(child.emit("born")){
   // This wont execute 
   console.log("Born again!");
}
// Because birth is an one time event.
console.log(child.emit("born"));

Output :

Say : Hello World!
The child is crying!
Awe that is cute :)
false

On a serious note, we can use this in a real programming scenario like :

db.insert({...},function(err,Record){  
if(error) emit("insertFailed",{err:err, customer:customer});  
else emit("added",customer);  
}

Anyway happy coding! Enjoy Emitting Events :)



Published at DZone with permission of Hemanth Madhavarao, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)