公布订阅因素
- 缓存队列,寄存订阅者信息
- 具备减少、删除订阅的能力
- 状态扭转时告诉所有订阅者执行监听
公布订阅存在调度核心,状态产生扭转时,公布订阅毋庸被动告诉
模仿实现
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");