当前位置: 首页 > wzjs >正文

展台设计网站都有哪些公司网站建设注意

展台设计网站都有哪些,公司网站建设注意,故城县网站建设服务,网站建设基础代码手写实现一个简易的发布订阅模式,通常有以下几个关键点: 订阅(subscribe):用户订阅特定的事件,当该事件触发时,执行与事件关联的回调函数。 发布(publish):当…

手写实现一个简易的发布订阅模式,通常有以下几个关键点:

  1. 订阅(subscribe):用户订阅特定的事件,当该事件触发时,执行与事件关联的回调函数。

  2. 发布(publish):当某个事件发生时,发布该事件,并通知所有订阅了该事件的回调函数。

发布订阅模式实现

我们可以创建一个 EventEmitter 类,实现 subscribe、unsubscribe(取消订阅)和 publish(发布)方法。

实现代码:

class EventEmitter {
constructor() {
// 存储事件名和对应的订阅者列表
this.events = {};
}

// 订阅事件
subscribe(event, listener) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(listener); // 将订阅者(回调函数)添加到事件的订阅者列表
return () => this.unsubscribe(event, listener); // 返回取消订阅的函数
}

// 取消订阅
unsubscribe(event, listener) {
const listeners = this.events[event];
if (!listeners) return;

const index = listeners.indexOf(listener);
if (index !== -1) {listeners.splice(index, 1);  // 移除指定的回调函数
}

}

// 发布事件
publish(event, …args) {
const listeners = this.events[event];
if (!listeners) return;

listeners.forEach(listener => listener(...args));  // 执行每个订阅者的回调

}
}

说明:

  1. subscribe:

如果事件尚未存在,则为该事件创建一个空数组。

将订阅者(即回调函数)推入事件对应的数组中。

返回一个取消订阅的函数,方便用户手动移除某个事件的订阅。

  1. unsubscribe:

用于取消订阅,查找指定事件的回调函数并从订阅者列表中移除它。

  1. publish:

用于触发事件,通知所有订阅者。

通过 forEach 遍历事件对应的回调列表,执行每个回调函数。

使用示例:

const emitter = new EventEmitter();

// 订阅事件
const onUserLogin = (username) => {
console.log(${username} has logged in!);
};
const onUserLogout = (username) => {
console.log(${username} has logged out!);
};

const unsubscribeLogin = emitter.subscribe(‘login’, onUserLogin);
const unsubscribeLogout = emitter.subscribe(‘logout’, onUserLogout);

// 发布事件
emitter.publish(‘login’, ‘john_doe’); // 输出: john_doe has logged in!
emitter.publish(‘logout’, ‘john_doe’); // 输出: john_doe has logged out!

// 取消订阅
unsubscribeLogin(); // 取消登录事件的订阅
emitter.publish(‘login’, ‘jane_doe’); // 不会输出任何信息,因为已经取消订阅

// 再次发布注销事件
emitter.publish(‘logout’, ‘jane_doe’); // 输出: jane_doe has logged out!

扩展:

如果需要支持一次性事件(例如订阅者只想接收一次事件),可以实现一个 once 方法,订阅后自动取消订阅。

还可以支持事件参数的筛选、优先级等功能。

总结:

该实现提供了一个简单的发布订阅系统,支持事件的订阅、取消订阅和发布。

通过此模式,事件的发布者与订阅者之间解耦,适合用于异步通信、消息推送、事件驱动的编程等场景。

如果你需要进一步的功能扩展或者有其他问题,随时告诉我!

http://www.dtcms.com/wzjs/566326.html

相关文章:

  • 淮安做网站的公司有哪些公司wordpress 在线demo
  • 什么网站可以找到防水工程做广州专业网站设计
  • 迅速百度网站自然排名添加到wordpress视频库中
  • 服装网站建设论文如何编写一套网站模板
  • 杭州网站建设电话ui设计需要学什么
  • 南通做网站多少钱软件研发过程管理
  • 太原做网站页面的wordpress视频曹鹏
  • 遵义市城乡建设局安管人员考试网站地铁公司招聘信息网站
  • 做led灯网站有哪些呢十大猎头公司
  • 饭店网站建设策划方案购买腾讯云 做网站
  • 广西河池住房和城乡建设厅网站python做网页界面
  • 是可以随时修改网站内容的.泰安网站开发公司
  • 江苏住房和城乡建设部网站适合用于网站开发的工具
  • 怎么做阿里国际网站的数据分析网站建设服务电话
  • 制作人在那个网站能看深圳杰恩创意设计有限公司网站
  • 建站公司兴田德润简介wordpress中控制图片标签
  • 怎么选择五屏网站建设手机绘图设计免费软件
  • 襄阳定制型网站开发hao123主页是哪个软件
  • 购物网站 页面设计搜索引擎优化有哪些要点
  • 给房地产公司做网站的公司百度网站首页的设计理念
  • 重庆做网站的公司有哪些美容行业培训网站建设
  • 郑州网站建设易云巢深圳优化公司排名
  • 做的好的手机网站有哪些内容网站框架建设
  • 江苏省两学一做网站集团网站建设基础方案
  • 全球网站流量查询哪里卖网站域名
  • 网站建设常用的工具智能网站优化 cms 加盟
  • 哪些网站做物流推广比较好有专门做消除网站上对公司不利的
  • 网站页脚设计代码汕头网站模板价格
  • 网站建设中期报告上海网站建设设计公司
  • 做拼团网站二手房网站制作教程