Javascript 事件EventEmitter使用示例

在基于javascript的事件进行开发时,常用到event模块的EventEmitter类。要使自己的模块具有事件的触发和监听功能,比如想通过这种方式使用:

const Emitter = require('./Emitter');
const e = new Emitter;
e.on('hi', function (data) {
    console.log("hi, " + data);
});
e.hello();

对于以上代码中的文件模块Emitter.js,可以有三种实现思路:

方法一

使用ES6关键字extends继承EventEmitter,这是最简单直观的方法:

const EventEmitter = require('events');
class Emitter extends EventEmitter {
    hello() {
        this.emit('hi', 'I am es6');
    }
}
module.exports = Emitter;

方法二

通过util的继承方法继承EventEmitter:

const EventEmitter = require('events');
const util = require('util');
function Emitter() {
    this.hello = function () {
        this.emit('hi', 'I am util');
    }
}
util.inherits(Emitter, EventEmitter);
module.exports = Emitter;

方法三

直接在EventEmitter对象中添加方法,然后将该对象导出:

const EventEmitter = require('events');

module.exports = function () {
    let emitter = new EventEmitter;
    emitter.hello = function(){
        emitter.emit('hi', 'I am EventEmitter');
    }
    return emitter;
}

你可能感兴趣的:(Javascript 事件EventEmitter使用示例)