EventHub简单实现

给你一囗甜甜゛ 提交于 2020-01-10 18:21:58

以下是EventHub的简单实现

 class EventHub {
   constructor() {
     this.events = {}
   }
   on(eventName, fn) {
     if(!this.events[eventName]) {
       this.events[eventName] = []
     }
     this.events[eventName].push(fn)
   }
   emit(eventName, params) {
     let fnLists = this.events[eventName]
     if(Array.isArray(fnLists) && fnLists.length > 0) {
       fnLists.map(fnList => {
         fnList.apply(this, params)
       })
     }
   }
   off(eventName, fn) {
     let fnLists = this.events[eventName]
     for(let i=0, len=fnLists; i < len; i++) {
       if(fnLists[i] === fn) {
         delete fnLists[i]
         break;
       }
     }
   }
 }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!