才接触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);
}
}