每天积累一点点==

发布订阅模式:订阅者(Subscriber)把自己想订阅的事件注册(Subscribe)到调度中心(Event Channel),当发布者(Publisher)发布该事件(Publish Event)到调度中心,也就是该事件触发时,由调度中心统一调度(Fire Event)订阅者注册到调度中心的处理代码。这个概念类似于如今的微服务

话不多说,我们直接上代码

class Subscribe{
    constructor(){
        // 维护注册列表
        this.list = []
    }
    // 
    on(name,user,fn){
        this.list.push({
            "name":name,
            "user":user,
            "fn":fn
        })
        console.log(user + "订阅了" + name)
    }
    off(name,user){
        // 遍历删除,达到取消订阅效果
        this.list.forEach((item,index)=>{
            if(item.name == name && item.user == user){
                this.list.splice(index,1)
            }

        })
    }
    emit(name,content){
        // 触发事件
        this.list.forEach(item=>{
            if(item.name = name){
                console.log("给" + item.user + "发信息")
                item.fn(content)
            }
        })

    }
}
let subscribe = new Subscribe();
subscribe.on(
    "湖人",
    "wuyz",
    function(content){
        console.log("lbjmvp")
        console.log(content)
})
subscribe.emit("湖人","hhh")
subscribe.off("湖人","wuyz")
subscribe.emit("湖人","hhh")

最后终端的输出如下: