什么是发布订阅模式
发布订阅模式 是观察者模式的一种变形,定义了对象间一对多的关系, 让多个订阅者同时监听一个主题对象(发布者),当一个对象发生变化时, 所有依赖他的对象都得到通知 。
应用场景
- 可以广泛应用异步编程,可以替代回到函数
- 一个对象不再显式的调用另一个对象的接口
特点:
- 创建订阅者需要消耗一定的时间和内存
- 虽然弱化对象之前的链接,过度使用反而使代码不好理解不好维护
class EventEmitter {
constructor() {
this._evenpool = {}
},
on(event, callback) {
this._eventpool[event] ? this._eventpool[event].push(callback) : this._eventpool[event] = [callback]
},
emit(event, ...args) {
this._eventpool[event] && this._eventpool[event].forEach(cb => {cb(this, args)})
},
once(event, callback) {
this.on(event, (...args) => {
callback(...args)
this.off(event) {
delele this._eventpool[event]
}
})
},
off(event) {
if(this._eventpool[event]) {
delete this._eventpool[event]
}
}
}