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

Posted NANA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日灵魂一问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!

以上是关于每日灵魂一问nodejs-eventEmitte是啥?手动实现的主要内容,如果未能解决你的问题,请参考以下文章

每日灵魂一问-如何实现文件上传?

每日灵魂一问-继承的6种方法(下)

每日灵魂一问-继承的6种方法(上)

每日灵魂一问- Node 中 Buffer 的理解

每日灵魂一问-node.js的全局对象有哪些?

每日灵魂一问-浅谈node.js中的process