关于javascript:发布订阅模式

32次阅读

共计 586 个字符,预计需要花费 2 分钟才能阅读完成。

公布订阅因素

  • 缓存队列,寄存订阅者信息
  • 具备减少、删除订阅的能力
  • 状态扭转时告诉所有订阅者执行监听

公布订阅存在调度核心,状态产生扭转时,公布订阅毋庸被动告诉
模仿实现

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");

正文完
 0