js實現發布訂閱模式


每天積累一點點==

發布訂閱模式:訂閱者(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")

最后終端的輸出如下:

 

 

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM