前端的订阅与发布是一种设计模式,也被称之为观察者模式。这种设计模式主要是为了实现观察和广播,发布者可以通知多个订阅者,订阅者也可以订阅多个发布者实现了多对多的观察和广播功能。
实现代码如下:
class Observer{
obj={}
// 订阅函数
on(subscribe,callback){
if(this.obj[subscribe]){
this.obj[subscrible].push(callback)
}else{
this.obj[subscribe]=[callback]
}
}
// 发布函数
trigger(subscribe){
const subscribes=this.obj[subscribe] || []
subscribes.forEach(fn => fn())
}
// 取消订阅
cancel(subscribe,callback){
const subscribes=this.obj[subscribe] || []
const index=subscribes.findIndex(fn => callback === fn)
if(index > -1){
subscribes.splice(index,1)
}
}
}