每天积累一点点==
发布订阅模式:订阅者(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")
最后终端的输出如下: