首页 > 怎样封装事件

怎样封装事件

才接触node,知道EventEmitter可以用on方法添加事件,然后用emit触发事件。
现在我想自己写一个模块,可以对外提供添加事件的方法,然后模块执行过程中可以执行这些事件。

import MyFunc from './myfunc';
let my = new MyFunc();
my.on('start', function() {
    console.log('开始');
});
my.on('end', function() {
    console.log('结束');
})

我想达到的效果就类似上面这种,在模块外部可以给某些事件添加functions
模块内部应该用EventEmitter吗?怎么把on方法暴露出来?最好能给个例子,谢谢!


继承EventEmiter
ES5

var EventEmitter = require("events").EventEmitter;

function MyClass() {
    EventEmitter.call(this);
}

MyClass.prototype = Object.create(EventEmitter.prototype);

MyClass.prototype.doSomething = function(data) {
    this.emit("doSomething", data);
}

ES6

var EventEmitter = require("events").EventEmitter;
class MyClass extends EventEmitter
{
    constructor(){
        super();
    }

    doSomething(data){
        this.emit("doSomething", data);
    }
}
【热门文章】
【热门文章】