订阅与发布

127 阅读1分钟

前端的订阅与发布是一种设计模式,也被称之为观察者模式。这种设计模式主要是为了实现观察和广播,发布者可以通知多个订阅者,订阅者也可以订阅多个发布者实现了多对多的观察和广播功能。

实现代码如下:

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)
        }
    }
}