javascript发布订阅pubsub模式

郑庙华      2022-02-12     240

关键词:

首先使用数组缓存订阅者订阅的消息,当订阅者订阅消息的时候,把订阅的消息push到指定消息的队列中,当发布者发布消息的时候,我们遍历执行push到指定消息队列中的回调事件。

var Pubsub=(function(){
    var eventObj={};
    return {
        subscribe:function(event,fn){
            eventObj[event]=fn
        },
        publish:function(event){
            if(eventObj[event]) eventObj[event]();
        },
        off:function(event,fn){
            if(eventObj[event]) eventObj[event]=null;
        }
    }
})()
Pubsub.subscribe(‘event‘,function(){
    console.log("正在执行,但是一个事件只能绑定一个操作");
})
Pubsub.publish("event");
//支持一个事件绑定多个操作
var Pubsub1=(function(){
    var quence={};//{‘type1‘:[],‘type2‘:[]}
    return {
        subscribe:function(event,fn){
            if(!quence[event]) quence[event]=[];
            quence[event].push(fn);
        },
        publish:function(event){
            var eventQuence=quence[event],
                len=eventQuence.length;
            if(len>0){
                eventQuence.forEach((item,index)=>{
                    item()
                })
            }
        },
        off:function(event,fn){
            var eventQuence = quence[event];
            if (eventQuence) {
                quence[event] = eventQuence.filter(function(item) {
                    return item !== fn;
                });
            }
        }
    }
})()
function first(){
    console.log("emit first")
}
function second(){
    console.log("emit second")
}
Pubsub1.subscribe(‘a‘,first)
Pubsub1.subscribe(‘a‘,second)
Pubsub1.off(‘a‘,first)//退订一个first事件
Pubsub1.publish("a");

 

redis发布订阅和stream

参考技术A发布订单系统是日常开发中经常会用到的功能。简单来说,就是发布者发布消息,订阅者就会接受到消息并进行相应的处理,如下图所示。Redis为我们提供了发布/订阅的功能模块PubSub,可以用于消息传递。其中发布者pu... 查看详情

pubsub 订阅者出错:超出最大消息大小

...我的应用程序使用GoogleCloudPubsub。pubsub主题的订阅者是用Javascript编写的,并在Nodejs上运行。我正在使用google提供的官方pubsub客户端。代码如下:vartopic=gclo 查看详情

订阅者的Spring pubsub过滤消息

...过滤消息【英文标题】:SpringpubsubFilterMessagesforsubscriber【发布时间】:2021-12-1914:28:07【问题描述】:我尝试使用pubsub实现请求异步响应模式。我正在通过使用弹簧集成来做到这一点。我在两端定义了一个主题和两个订阅(用于异... 查看详情

经典的发布订阅者模式

functionPubsub(){this.handlers={};}Pubsub.prototype={on:function(eventType,handler){varself=this;if(!(eventTypeinself.handlers)){self.handlers[eventType]=[];}self.handlers[eventType].push(handler)},em 查看详情

javascript发布订阅模式(代码片段)

查看详情

订阅 pubsub 但像在 MUC 中一样匿名发布

】订阅pubsub但像在MUC中一样匿名发布【英文标题】:besubscribedtopubsubbutpublishanonymouslylikeinMUC【发布时间】:2012-05-1617:58:14【问题描述】:我看不到使用我的JID订阅pubsub的可能性,但有时会像在MUC中那样匿名发布。我慢慢但肯定地... 查看详情

XMPP Pubsub 问题使用 smack 订阅和发布

】XMPPPubsub问题使用smack订阅和发布【英文标题】:XMPPPubsubproblemssubscribeandpublishusingsmack【发布时间】:2014-10-1110:22:02【问题描述】:我正在尝试在我的应用程序中使用Pubsub模块,现在我正在尝试运行一些发布/订阅测试,但到目前... 查看详情

PubSub 中发布者的存在信息

】PubSub中发布者的存在信息【英文标题】:PresenceinformationofPublishersinPubSub【发布时间】:2012-11-2810:18:32【问题描述】:设置:我已经设置了一个pubsub服务,其中发布者会定期发布地理位置数据。订阅者收到发布者的位置数据。订... 查看详情

vue2.0—消息订阅与发布pubsub(二十)

【Vue2.0】—消息订阅与发布pubsub(二十) 查看详情

javascript订阅-发布模式(观察者模式)(代码片段)

查看详情

为啥 PubSub 订阅在保留期到期后向死信主题发布消息

】为啥PubSub订阅在保留期到期后向死信主题发布消息【英文标题】:WhyPubSubsubscriptionpublishamessagetodeadlettertopicafterretentionperiodexpires为什么PubSub订阅在保留期到期后向死信主题发布消息【发布时间】:2020-12-1409:10:09【问题描述】:... 查看详情

redis的发布订阅模式

概要redis的每个server实例都维护着一个保存服务器状态的redisServer结构structredisServer{  /* Pubsub */    // 字典,键为频道,值为链表    // 链表中保存了所有订阅某个频道的客户端&nb... 查看详情

redispub/sub发布订阅模式的深度解析与实现消息队列(代码片段)

...息队列。文章目录1Pub/Sub的概述2订阅3取消订阅4模式匹配5发布6Pub/Sub原理6.1pubsub_channels6.2pubsub_patterns7Pub/Sub缺点1Pub/Sub的概述我们可以利用Redis的List数据结构实现一个简单的消息队列,通过lpush命令写入消息& 查看详情

javascript设计模式--发布/订阅模式

直接上代码:index.html:<!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <title>设计模式</title></head><body> <divid="box"> <div>{{message}}& 查看详情

观察者模式和发布/订阅模式的区别(代码片段)

...nsole.log(a,b);3);4pubsub.publish(‘test‘,‘123‘,‘HH‘);//123HH(发布者B发布了test事件)调用publish后打印出了123HH。很奇妙的一段代码,当然实际上只是遍历了数组,然后把数组中的所有函数全部执行一遍而已。但是对于一个没读过实... 查看详情

javascript设计模式-订阅发布模式(观察者模式)

varEvent=(function(){varglobal=this,Event,_default=‘default‘;Event=function(){var_create,_listen,_trigger,_remove,_shift=Array.prototype.shift,_unshift=Array.prototype.unshift,namespaceCache={},each=f 查看详情

[已解决]Pubsub 推送订阅不确认消息

...息【英文标题】:Pubsubpushsubscriptionnotacknowledgingmessages【发布时间】:2021-03-0502:55:27【问题描述】:这是我的设置。订阅A是一种推送订阅,可将消息发布到云运行部署。该部署公开了一个HTTP端点,处理消息,将结果发布到主题B... 查看详情

观察者模式——javascript

观察者模式又被称为发布-订阅模型或消息机制。基本思想是观察者一个静态(或全局)对象,为大家提供三个方法:发布、订阅、取消订阅。想得到消息的订阅者需要通过订阅某些消息,当发布者发布某些消息的时候对应的订... 查看详情