nodejs中的EventEmitter

EventEmitter是nodejs核心的一部分。很多nodejs对象继承自EventEmitter,用来处理事件,及回调。来看API中的例子

Javascript代码 复制代码 收藏代码
  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!"  
var util = require("util");
var events = require("events");//EventEmitter通过events模块来访问

function MyStream() {//新建一个类
    events.EventEmitter.call(this);
}

util.inherits(MyStream, events.EventEmitter);//使这个类继承EventEmitter

MyStream.prototype.write = function(data) {//定义一个新方法
    this.emit("data", data);//在此触发名为"data"事件
}

var stream = new MyStream();

stream.on("data", function(data) {//注册监听器,监听名为"data"事件
    console.log('Received data: "' + data + '"');
})
stream.write("It works!"); // Received data: "It works!"

可看出通过继承EventEmitter可为对象注册和触发相关事件。 可与Ruby做个比较,通过block来实现。

Ruby代码 复制代码 收藏代码
  1. class MyStream  
  2.   def write(data)  
  3.     yield data  
  4.   end  
  5. end  
  6.   
  7. stream = MyStream.new  
  8. stream.write('It works!') do |data|  
  9.   puts "Received data: #{data}"  
  10. end  
posted @ 2014-11-04 17:30  x_window  阅读(339)  评论(0)    收藏  举报