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();,事件将发射。