• 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
  • 相关阅读:
    Elasticsearch 深入5
    Elasticsearch 深入4
    Elasticsearch 深入3
    Elasticsearch 深入2
    Elasticsearch1简单深入
    Kibana简单操作Elasticsearch
    什么是非阻塞同步?
    面向对象之思考
    使用spring代码中控制事务
    mybatis 中使用oracle merger into
  • 原文地址:https://www.cnblogs.com/zjj-study/p/13654650.html
Copyright © 2020-2023  润新知