// 发布订阅模型
class DataSource{
constructor() {
// 订阅者
this.listener = []
}
// 订阅
addChangeListener(callback){
this.listener.push(callback)
}
// 取消订阅
removeListener(callback){
let index = this.listener.indexOf(callback)
this.listener.splice(index,1)
}
// 发布消息
publish(data){
for (let i = 0; i < this.listener.length; i++) {
// 对应每一个订阅者
const listener = this.listener[i]
// 触发push进listener里的回调函数
listener(data)
}
}
}
const data_source = new DataSource()
// 消息订阅
const fn1=(data)=>{console.log('消息订阅111',data)}
const fn2=(data)=>{console.log('消息订阅222',data)}
data_source.addChangeListener(fn1)
data_source.addChangeListener(fn2)
// 取消订阅
data_source.removeListener(fn2)
// 消息发布
data_source.publish('有新消息发布')
简易实现发布订阅模型
最新推荐文章于 2024-08-15 22:33:35 发布