发布/订阅模式

作者: 浅忆_0810 | 来源:发表于2020-11-10 23:36 被阅读0次

    1. 介绍

    • 订阅者
    • 发布者
    • 信号中心

    我们假定,存在一个"信号中心",某个任务执行完成,就向信号中心"发布"(publish)一个信号,其他任务可以向信号中心"订阅"(subscribe)这个信号,从而知道什么时候自己可以执行,这就叫做"发布/订阅模式"(publish-subscribe pattern

    // 事件触发器
    class EventEmitter {
      constructor() {
        // { 'click': [fn1, fn2], 'change': [fn] }
        this.subs = Object.create(null);
      }
    
      // 订阅通知(注册事件)
      $on(eventType, handler) {
        this.subs[eventType] = this.subs[eventType] || [];
        this.subs[eventType].push(handler);
      }
    
      // 发布通知(触发事件)
      $emit(eventType) {
        if (this.subs[eventType]) {
          this.subs[eventType].forEach(handler => {
            handler();
          });
        }
      }
    }
    
    // 测试
    let em = new EventEmitter();
    
    // 注册事件
    em.$on('click', () => {
      console.log('click1');
    })
    em.$on('click', () => {
      console.log('click2');
    })
    
    // 触发事件
    em.$emit('click');
    

    相关文章

      网友评论

        本文标题:发布/订阅模式

        本文链接:https://www.haomeiwen.com/subject/hspsbktx.html