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

大连 网站开发长沙网站建设网站

大连 网站开发,长沙网站建设网站,英国房产网站大全,毕节网站建设与对策分析发布订阅模式是什么 发布订阅模式是一种代码的设计模式#xff0c;它允许对象间进行松散耦合的通信。 发布者#xff08;Publishers#xff09;不会直接调用订阅者#xff08;Subscribers#xff09;#xff0c;相反#xff0c;它们通过事件通道发布消息#xff1b;订…发布订阅模式是什么 发布订阅模式是一种代码的设计模式它允许对象间进行松散耦合的通信。 发布者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(ee!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.hkea.cn/news/14483165/

相关文章:

  • 建网站要使用哪些软件python网页编程
  • 对商家而言网站建设的好处在线教育培训平台定制
  • 网站商城建设要多少钱长安网站建设制作价格
  • 机械网站建设价格人工智能营销网站开发
  • 乐清网络网站建设我做的网站有时打开很慢什么原因呢
  • 电商网站可以用dw做大沥网站建设
  • 鲜花网站设计论文国内高端品牌网站建设
  • 网站运营推广方法总结郑州建设信息网站
  • 在百度上做购物网站长沙建站找有为太极环境遵
  • html5网站开发技术做网站的目的是什么
  • 本地建站软件wordpress如何汉化
  • 济南网站建设百家号计算机软件公司排名
  • 印刷包装公司网站模板教学资源网站建设设计
  • 网站建设流程新闻腾讯云服务器多少钱一个月
  • 外贸网站推广多少费用甘肃建设厅官网
  • 珠海市城乡住房建设局网站单位网站建设
  • 中山免费建站广州房地产网站建设
  • 益阳做网站的公司wordpress无刷新
  • 做网站项目实例在线代理网页版 proxy
  • 医院网站备案前置审批关键词挖掘爱网站
  • 手机网站整站源码wordpress保存的字体
  • 图书类网站建设策划书怎么样给自己做网站
  • 茂名手机网站建设公司dw淘宝网页制作视频教程
  • 做网站的关键词网站建设费用模板
  • 朔州网站建设费用聚美优品网站建设的目标
  • 交河做网站263企业邮箱登陆入囗
  • 站群网站推广工具费用wordpress跳转链接插件汉化
  • 资源网站都有哪些cmseasy破解版
  • 东莞官方网站 优帮云清远市清城区发布
  • 智能网站建设系统google地图嵌入网站