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

做个网站一年要多少钱下载百度 安装

做个网站一年要多少钱,下载百度 安装,南宁新站seo,新会网站建设发布订阅模式是什么 发布订阅模式是一种代码的设计模式,它允许对象间进行松散耦合的通信。 发布者(Publishers)不会直接调用订阅者(Subscribers),相反,它们通过事件通道发布消息;订…

发布订阅模式是什么

发布订阅模式是一种代码的设计模式,它允许对象间进行松散耦合的通信。
发布者(Publishers)不会直接调用订阅者(Subscribers),相反,它们通过事件通道发布消息;订阅者通过注册监听事件通道上的消息来做出响应。
这种模式在事件驱动编程和异步编程中非常有用。

发布订阅模式怎么实现

发布订阅模式在前端开发中有广泛的应用。例如,事件处理、状态管理库(如 Redux)、消息中间件、数据流控制等

1)一个用于存储事件及其对应回调的事件中心。

2)一个 on 方法,用于订阅某个事件,并将回调函数注册到事件中心中。

3)一个 emit 方法,用于发布某个事件,并调用所有订阅该事件的回调函数。

4)一个 off 方法,用于解除订阅。

使用场景:
发布-订阅模式可用于解耦复杂的代码逻辑,例如:
浏览器中的事件处理(如点击,输入等);
背景任务和前台任务之间的通信;
多模块或组件之间的通信。

高级实现:
在实际开发中,我们可能会用到一些更复杂的发布-订阅库比如 EventEmitter (Node.js 内置)、PubSubJS 等,这些库提供了更具备鲁棒性的实现和更多特性。

代码

let eventEmitter ={//事件中心events:{},//订阅事件on: function (eventName,callback){//如果事件不存在if(!this.events[eventName]){this.events[eventName] = [];}this.events[eventName].push(callback);},//发布事件 事件触发emit:function (eventName,...args){// 事件不存在if(!this.events[eventName]){return ;}this.events[eventName].forEach(callback =>{callback(...args)})},//取消事件off:function (eventName,callback){if(this.events[eventName]){this.events[eventName] = this.events[eventName].filter(e=>e!==callback)}},/*** 这里的 args 并没有在 once 函数的参数列表中明确声明,* 而是作为 onceWrapper 函数的一个内部变量(通过剩余参数语法捕获)。* 这是因为 onceWrapper 函数不知道它会接收多少个参数,* 所以它使用 ...args 来捕获所有参数,并将它们作为一个数组处理* 。然后,它可以通过 callback(...args) 将这些参数传递给 callback 函数*///一次性订阅once:function (eventName,callback){const onceWrapper = (...args)=>{callback(...args)//执行一次后取消订阅this.off(eventName,onceWrapper)}this.on(eventName,onceWrapper)}}//示例
//用户定义的回调函数
function user1(msg){console.log("user1 ",msg);
}function user2(msg){console.log("user2 ",msg);
}function user3(msg){console.log("user3 ",msg);}
//注册事件
eventEmitter.on("test",user1)
eventEmitter.on("test",user2)//事件触发
eventEmitter.emit("test","这是一个测试")//取消订阅
eventEmitter.off('test', user1);// 发布
eventEmitter.emit('test', '这次只有 User2 收到消息');//一次性订阅注册
eventEmitter.once("once",user3)//事件触发两次
eventEmitter.emit("once","test by user3")
eventEmitter.emit("once","test by user3")//没有输出
http://www.hrbkazy.com/news/34312.html

相关文章:

  • 十大网站建设品牌产品软文范例1000字
  • 网站建设否定关键词成品网站源码
  • 做视频的网站多少钱百度地图打车客服人工电话
  • 网站关键词推广方案百度关键词搜索排名多少钱
  • 邢台网站建设服务商如何设置淘宝友情链接
  • 有哪些网站建设工作推广计划
  • 手机网站seo怎么做自媒体135网站
  • 专门做网站的公司叫什么网页生成器
  • 建设网站赚钱seo网络推广案例
  • 建设部质量监督官方网站二级网站怎么做
  • 池州网站制作公司网站建设流程步骤
  • 百度网盘做存储网站免费的seo
  • 俄文网站制作营销战略有哪些内容
  • 吉林省 网站建设有没有免费的crm系统软件
  • 浙江网站建设网大连seo建站
  • 长春网站建设排名靠前宁德市旅游景点大全
  • 受欢迎的赣州网站建设西安外包网络推广
  • 北京好的网站建设公司合肥网站外包
  • 公司网站宣传设计方案杭州疫情最新消息
  • 天津网站优化软件seo销售话术开场白
  • 可以做黄金期权的网站企业网站排名优化
  • cms做网站新闻 最新消息
  • 可以做婚礼鲜花布置的网站长沙公司网络营销推广
  • 自己建个电影网站可以吗做app软件大概多少钱
  • 简述对网站进行评析的几个方面.百度总部电话
  • 关于做网站的策划方案网上销售都有哪些平台
  • 营销型网站建设模板百度广告开户
  • 昆山品牌网站建设品牌seo培训
  • google谷歌搜索引擎入口网络排名优化软件
  • 唐山石家庄做网站哪家好企业营销策划案例