Nodejs最吸引人的特性就是其事件驱动. 我们也可以使用nodejs提供的EventEmitter来写一些基于事件驱动的程序,有两种方法来实现:
1, 比较普通的,基于继承实现的

var events = require('events'),
sys
= require('sys');

//定义Demo类
var Demo = function(){
   
//Demo继承EventEmitter
    events
.EventEmitter.call(this);

   
this.p = function(){
       
for(var i=0;i < 100; i++){
           
if(i == 50){
               
this.emit("data",i);
           
}
       
}
   
}
};

//Demo继承EventEmitter
sys
.inherits(Demo, events.EventEmitter);

//下面我们就来测试一旦找到50就停止打印.
//new一个Demo对象
var demo = new Demo();

//在demo对象emit ‘data’的时候,打印出50
demo
.on('data', function(i){
    console
.log(i);
});

//触发
demo
.p();

2, 利用EventEmitter本身实现的

var events = require('events'),
sys
= require('sys');

//定义Demo类
var Demo = function(){
   
//new一个EventEmitter对象,并将其赋值给this.emitter
   
var emitter = new events.EventEmitter();
   
this.emitter = emitter;
};

Demo.prototype.p = function(){
   
for(var i=0;i < 100; i++){
       
if(i == 50){
           
this.emitter.emit("data",i);
       
}
   
}
};

//下面我们就来测试一旦找到50就停止打印.
//new一个Demo对象
var demo = new Demo();

//在demo对象的emitter, emit ‘data’的时候,打印出50
demo
.emitter.on('data', function(i){
    console
.log(i);
});

//触发
demo
.p();

在Github上托管的项目,两种方式使用的都挺多. JUST HAPPY!