发布订阅模式

发布订阅要素

  • 缓存队列,存放订阅者信息
  • 具有增加、删除订阅的能力
  • 状态改变时通知所有订阅者执行监听
【发布订阅模式】发布订阅存在调度中心,状态发生改变时,发布订阅无须主动通知
模拟实现
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");

    推荐阅读