发布订阅模式
发布订阅要素
- 缓存队列,存放订阅者信息
- 具有增加、删除订阅的能力
- 状态改变时通知所有订阅者执行监听
发布订阅存在调度中心,状态发生改变时,发布订阅无须主动通知模拟实现
class PubSub {
  constructor() {
    this._events = {};
  }
  // 注册
  subScribe(event, cb) {
    if (this._events[event]) {
      // 如果当前event存在,所以我们只需要往后添加当前次监听操作
      this._events[event].push(cb);
    } else {
      // 之前没有订阅过此事件
      this._events[event] = [cb];
    }
  }
  // 发布
  publish(event, ...args) {
    const items = this._events[event];
    if (items && items.length) {
      items.forEach(function (cb) {
        cb.call(this, ...args);
      });
    }
  }
}
let ps = new PubSub();
ps.subScribe("event1", () => {
  console.log("event1 do");
});
ps.subScribe("event1", () => {
    console.log("event1 do-----");
  });
ps.publish("event1");
ps.publish("event1");转载自:https://segmentfault.com/a/1190000041783739




