每日灵魂一问nodejs-eventEmitte是啥?手动实现

eventEmitte是什么

eventEmitter是一个对事件进行监听的对象,
说白了就是为事件写回调函数,
当触发一个事件执行后,
会执行为该事件绑定的回调函数。架构

Node采用了事件驱动机制,而EventEmitter就是Node实现事件驱动的基础
Node的events模块只提供了一个EventEmitter类,
这个类实现了Node异步事件驱动架构的基本模式——观察者模式异步

手动实现eventEmitte

class EventEmitter{
   constructor(){
      this.handler={};
   }
   on(eventName,callback){
      if(!this.handles[eventName]){
        this.handles[eventName]=[];
      }
      this.handles[eventName].push(callback);
   }
   emit(eventName,...arg){
       if(this.handles[eventName]){
       for(var i=0;i<this.handles[eventName].length;i++){
          this.handles[eventName][i](...arg);
       }
   }
}

调用
let event = new EventEmitter();
event.on('click',function(str){
   console.log(str);
});
event.emit('click','Yeah!');
//输出Yeah!