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

猜你喜欢

转载自blog.csdn.net/weixin_43788494/article/details/84444596