首页 > 其他 > 详细

9.11 eventbus

时间:2020-09-11 23:20:22      阅读:56      评论:0      收藏:0      [点我收藏+]
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

 

9.11 eventbus

原文:https://www.cnblogs.com/zjj-study/p/13654650.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!