EventEmitter是nodejs核心的一部分。很多nodejs对象继承自EventEmitter,用来处理事件,及回调。来看API中的例子
1 var util = require("util"); 2 var events = require("events");//EventEmitter通过events模块来访问 3 4 function MyStream() {//新建一个类 5 events.EventEmitter.call(this); 6 } 7 8 util.inherits(MyStream, events.EventEmitter);//使这个类继承EventEmitter 9 10 MyStream.prototype.write = function(data) {//定义一个新方法 11 this.emit("data", data);//在此触发名为"data"事件 12 } 13 14 var stream = new MyStream(); 15 16 stream.on("data", function(data) {//注册监听器,监听名为"data"事件 17 console.log('Received data: "' + data + '"'); 18 }) 19 stream.write("It works!"); // Received data: "It works!"
可看出通过继承EventEmitter可为对象注册和触发相关事件。
可与Ruby做个比较,通过block来实现。