发布/订阅模式

作者: 浅忆_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