9.11 eventbus

class EventBus {
  constructor() {
    this.events = {}
  }
  addEve (eventName,eventFn) {
   //console.log(this.events)
      this.events[eventName] = {
        eventFn,
        once:false
      }
  }
  emit (eventName,msg) {
    let key = Object.keys(this.events)
    if(key.includes(eventName)){ //如果找到了这个事件就执行
     if(this.events[eventName].once) {
       delete this.events[eventName]
     }else{
      this.events[eventName].eventFn(msg)
     }
    }
  }
  removeEve  (eventName,eventFn) {
    let key = Object.keys(this.events)
    if(key.includes(eventName)){ 
      delete this.events[eventName]
    }
    console.log(this.events)
  }
  once(eventName,eventFn){
    this.events[eventName] = {
      eventFn,
      once:true
    }
    console.log(this.events)
  }
  
}
let event = new EventBus()
event.addEve('class1',function class1(msg){
  console.log("class1---"+ msg)
})
event.addEve('class2',function class2(msg){
  console.log("class2---"+ msg)
})
event.addEve('class3',function class3(msg){
  console.log("class3---"+ msg)
})

 event.emit('class1','第一个事件')
 event.emit('class2','第2个事件')
 event.emit('class3','第3个事件')
 // event.once('class3','class3')
  //event.removeEve('class3')
  event.once('class3',function class3(msg){
    console.log("class3---"+ msg)
  })
 event.emit('class3','第3个事件')
 //event.emit('class3','第3个事件')
 event.removeEve('class2','class2')
 event.emit('class2','第2个事件')
//输出
class1---第一个事件 class2---第2个事件 class3---第3个事件 { class1: { eventFn: [Function: class1], once: false }, class2: { eventFn: [Function: class2], once: false }, class3: { eventFn: [Function: class3], once: true } } { class1: { eventFn: [Function: class1], once: false } } [Done] exited with code=0 in 0.122 seconds

 

posted @ 2020-09-11 22:03  尽世间恶丑  阅读(212)  评论(0编辑  收藏  举报