每天積累一點點==
發布訂閱模式:訂閱者(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")
最后終端的輸出如下: