1. 程式人生 > >JavaScript 釋出/訂閱模式

JavaScript 釋出/訂閱模式

釋出訂閱模式可以理解為:

使用者關注一個了微信公眾號(訂閱),當公眾號有內容更新時會推送(釋出)給所有關注該公眾號的使用者。

廢話不多說直接上程式碼(此demo僅幫助理解發布/訂閱模式):


let Observable = {
    observers:[],     // 訂閱者集合
    addObserver:function (observer) { // 新增訂閱者
        this.observers.push(observer)
    },
    removeObserver:function (observer) { // 移除訂閱者
        let index = this.observers.indexOf(observer);
        if(~index){
            this.observers.splice(index,1);
        }
    },
    notifyObservers:function (message) {  // 向訂閱者釋出訊息
        for(let i = 0; i <= this.observers.length-1; i++){
            this.observers[i](message);
        }
    }
};


function observer1(message){

    console.log(`1---------${message}`);

}

function observer2(message){

    console.log(`2---------${message}`);

}

function observer3(message){

    console.log(`3---------${message}`);

}

// 新增訂閱者
Observable.addObserver(observer1);
Observable.addObserver(observer2);
Observable.addObserver(observer3);

// 向訂閱者釋出(通知)訊息
Observable.notifyObservers('hello');

// 移除訂閱者
Observable.removeObserver(observer1);

Observable.notifyObservers('test');

輸出結果為:
    1---------hello
    2---------hello
    3---------hello
    2---------test
    3---------test