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!
转载于:https://blog.51cto.com/writerok/710863