前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实现一个简单的发布订阅模式_vue订阅者发布者实现

实现一个简单的发布订阅模式_vue订阅者发布者实现

作者头像
全栈程序员站长
发布2022-08-04 09:10:51
5370
发布2022-08-04 09:10:51
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

发布订阅模式可以理解为:

用户关注一个了微信公众号(订阅),当公众号有内容更新时会推送(发布)给所有关注该公众号的用户。

废话不多说直接上代码(此demo仅帮助理解发布/订阅模式):

代码语言:shell
复制
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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/107189.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 发布订阅模式可以理解为:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档