zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    LayoutInflater(布局服务)
    FOTA升级
    APK安装过程及原理详解
    Context类型
    Android应用的persistent属性
    Notification(状态栏通知)详解
    Handler消息传递机制浅析
    Selenium HTMLTestRunner 无法生成测试报告的总结
    【python】远程使用rsa登录sftp,上传下载文件
    02.性能测试中的指标
  • 原文地址:https://www.cnblogs.com/zjj-study/p/13654650.html
Copyright © 2011-2022 走看看