共计 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");
正文完
发表至: javascript
2022-05-01