乐趣区

关于前端:每日灵魂一问nodejseventEmitte是啥手动实现

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!
退出移动版