首页 > 其他分享 >发布订阅

发布订阅

时间:2023-08-22 22:13:29浏览次数:29  
标签:订阅 callback 发布 subscribers data event pubsub

class PubSub { constructor() { this.subscribers = {}; } subscribe(event, callback) { if (!(event in this.subscribers)) { this.subscribers[event] = []; } this.subscribers[event].push(callback); } unsubscribe(event, callback) { if (!(event in this.subscribers)) { return; } const index = this.subscribers[event].indexOf(callback); if (index > -1) { this.subscribers[event].splice(index, 1); } } publish(event, data) { if (!(event in this.subscribers)) { return; } this.subscribers[event].forEach(callback => { callback(data); }); } } // 用法示例 const pubsub = new PubSub(); // 订阅事件 pubsub.subscribe('event1', data => { console.log('订阅者1接收到数据:', data); }); pubsub.subscribe('event1', data => { console.log('订阅者2接收到数据:', data); }); pubsub.subscribe('event2', data => { console.log('订阅者3接收到数据:', data); }); // 发布事件 pubsub.publish('event1', 'Hello World'); // 取消订阅 pubsub.unsubscribe('event1', callback1); ``` 在上述示例中,`PubSub` 类表示一个发布-订阅模式的实现。它具有三个方法: - `subscribe(event, callback)`:订阅事件,将回调函数添加到特定事件的订阅者列表中。 - `unsubscribe(event, callback)`:取消订阅事件,从特定事件的订阅者列表中删除指定的回调函数。 - `publish(event, data)`:发布事件,将数据传递给特定事件的所有订阅者。 你可以根据需要调用这些方法来发布和订阅事件。

标签:订阅,callback,发布,subscribers,data,event,pubsub
From: https://www.cnblogs.com/flyboy-fb/p/17649823.html

相关文章

  • k8s发布应用
    前言首先以SpringBoot应用为例介绍一下k8s的发布步骤。1.从代码仓库下载代码,比如GitLab;2.接着是进行打包,比如使用Maven;3.编写Dockerfile文件,把步骤2产生的包制作成镜像;4.上传步骤3的镜像到远程仓库,比如Harhor;5.编写Deployment文件;6.提交Deployment文件到k8s集群;从以上步骤......
  • lerna 配置发布时 commitlint,提交信息
    要在Lerna配置中添加发布时的commitlint,你可以按照以下步骤进行操作:首先,确保你已经在项目中安装了commitlint。你可以使用以下命令进行安装:npminstall--save-dev@commitlint/cli@commitlint/config-conventional在你的Lerna项目的根目录下创建一个名为.commitl......
  • 哈希,列表,集合,有序集合,慢查询,pipeline,发布订阅,bitmap位图,Hyperloglog
    目录1哈希类型2列表类型3集合类型4有序集合(zset)5慢查询6pipeline与事务7发布订阅8Bitmap位图9HyperLogLog1哈希类型###1---hget,hset,hdelhgetkeyfield#获取hashkey对应的field的value时间复杂度为o(1)hsetkeyfieldvalue#设置hashkey对应的field的value......
  • 微信开发之一键发布群公告的技术实现
    简要描述:设置群公告请求URL:http://域名地址/setChatRoomAnnouncement请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String登录实例标识chatRoomId是String群号content是String内容请求参数示例{"wId":"349be9......
  • 发布项目到 jitpack
    theme:githubhighlight:a11y-dark发布项目到jitpack(Gradle7.x的版本已不适用android-maven的方法发布)1.在要发布androidmodule下的build.grdle添加,多个module就添加多个plugins{id'maven-publish'}tasksourceJar(type:Jar){classifier"sources"fro......
  • 百度发布全功能AI平台!
     Datawhale发布 百度BML全功能AI平台越来越多企业开始用AI解决实际问题,比如汉印使用AI在线下进行果蔬识别称重、上海浦东水务使用AI巡检阀门系统、猎头企业使用AI模型高效利用沉默简历库...百度发布全功能AI平台致力于解决AI从业者头疼问题。真正的从业人员才知道,AI行业除了......
  • 《Datawhale人工智能培养方案》发布!
     Datawhale干货 开源贡献:Datawhale团队结合周志华老师的西瓜书,我们发布了第一个开源教程《Pumpkinbook-南瓜书》,到现在我们已经开源了51份学习教程,共获得Github 4.3w star。你认为Datawhale体现的价值?Datawhale团队已经有200多个成员,我们在一起坚持做开源的意义和价值是什么?其......
  • Kaggle发布数据科学最新报告!82%男性, 62%硕博,薪酬6位数居多
    Kaggle开发者年度报告,机器之心编辑Kaggle正式发布了2021年度报告,超过2.5万名开发者参与调查,但来自中国的Kaggle数据科学家应该并不多。这是Kaggle进行用户深度调查和公开分享结果的第五个年头。在调查过程中,超过25000名数据科学家和机器学习工程师提交了关于自身背景和......
  • Java实现灰度发布的常用方式
    以下内容由GPT3.5生成,仅用于参考并了解基本概念什么是灰度发布灰度发布(GrayDeployment),也称为渐进式发布或金丝雀发布,是一种软件发布策略,用于将新版本的软件或功能逐步引入生产环境,以降低可能出现的问题对整个系统的影响。这种发布方式的核心思想是将新功能或版本仅部分暴......
  • RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估
    前言上一期讲到YCSB在RISC-V服务器上对MySQL进行性能测试(RISC-V公测平台发布·使用YCSB测试SG2042上的MySQL性能),在这一期文章中,我们继续深入讨论RISC-V+数据库的应用。本期就继续利用HS-2平台来测试数据库软件在RISC-V服务器上的兼容性。参与此次实验的数据库如下:RedisMongo......