Node.js
Node.js的事件发射使用案例
在Node中很多对象都可以发射事件,我们只要通过对象的“on”方法就可以监听这些事件,比如我们读取文件,但有数据时会触发事件:
var fs = require('fs'); // get the fs module
var readStream = fs.createReadStream('/etc/passwd');
readStream.on('data', function(data) {
console.log(data);
});
readStream.on('end', function() {
console.log('file ended');
});
在这里,我们绑定到readStream“数据”和“结束”事件,传入回调函数来处理每种情况。当这些事件之一发生时,readStream将调用回调函数。
上面是事件的消费,那么事件发送呢?Prodcuer如何实现?
首先我们得安装Events:
npm install events
初始化事件:
var EventEmitterVar = require('events').EventEmitter,
util = require('util');
为了让一个类有事件发射功能,我们得让它继承EventEmitterVar:
var exampleEventEmitterClass = function() {
console.log("The Class Constructor Example");
}
util.inherits(exampleEventEmitterClass, EventEmitterVar);
exampleEventEmitterClass 现在可以发射方法:
exampleEventEmitterClass.prototype.emitMethod = function() {
console.log('before the emitevent');
this.emit('emittedevent');
console.log('after the emitevent');
}
监听“emittedevent”事件的代码如下:
var evtEmitInstance = new exampleEventEmitterClass();
evtEmitInstance.on('emittedevent', function() {
console.log('We have got the functionality of Event Emitter');
});
如果我们调用evtEmitInstance.emitMethod();,事件将发射。