首页前端开发JavaScriptjs简单粗暴的发布订阅示例代码

js简单粗暴的发布订阅示例代码

时间2024-01-31 16:42:02发布访客分类JavaScript浏览864
导读:收集整理的这篇文章主要介绍了js简单粗暴的发布订阅示例代码,觉得挺不错的,现在分享给大家,也给大家做个参考。 什么是发布/订阅?我打个比方,你去某个门店买衣服,你和门店店长相互并不认识,...
收集整理的这篇文章主要介绍了js简单粗暴的发布订阅示例代码,觉得挺不错的,现在分享给大家,也给大家做个参考。

什么是发布/订阅?

我打个比方,你去某个门店买衣服,你和门店店长相互并不认识,门店店长只管卖他的衣服,并不关心是谁来买,而你也只管买你想要的衣服,并不关心是哪个门店在卖,这时,门店和你就组成了一个发布/订阅的关系。

当门店挂出衣服款式,你去找你想要的衣服,如果找到了,那就买下来,如果没找到,那就离开这家店。整个过程就是这么简单。

使用场景

异步通信、多页面间相互通信,pageA 的方法想在 pageB的方法调用的某个时机触发

直接上代码

class Publish {
 constructor() {
  this.listMap = {
}
    ;
 }
	// 订阅 on(key, fn) {
      this.listMap[key]   ? this.listMap[key].push(fn)   : this.listMap[key] = [fn];
       		// 存储订阅fn的下标  const index = this.listMap[key].length - 1;
      		// 返回取消订阅的function  return () =>
     this.clear(key, index);
 }
 	// 取消所有该key订阅 off(key) {
      delete this.listMap[key];
 }
 	// 取消key的指定的某个订阅 clear(key, index) {
      index === this.listMap[key].length - 1   ? this.listMap[key].pop()   : this.listMap[key][index] = null;
 }
 	//订阅一次触发后自动取消订阅 once(key, fn) {
      this.on(key, (...rest) =>
 {
       fn(...rest);
       this.off(key);
  }
    );
 }
	// 发布key trigger(key, ...rest) {
 	if(key in this.listMap) {
    	 	this.listMap[key].foreach(fn =>
 {
    	   fn(...rest);
	  }
    );
 	}
 }
}
    

使用方法

const ob = new Publish();
    // 订阅 sub1const sub1 = ob.on('sub1', (a, b) =>
 {
     console.LOG('sub1', a, b);
}
    );
    // 订阅 sub1const sub11 = ob.on('sub1', (a, b) =>
 {
     console.log('sub11', a, b);
}
    );
    ob.trigger('sub1', 2, 3);
    // 取消订阅sub1sub1();
    // 取消订阅sub11sub11();
    // 订阅 sub3ob.on('sub3', (a, b) =>
 {
     console.log('sub3', a, b);
}
    );
    // 订阅 sub3ob.on('sub3', (a, b) =>
 {
     console.log('sub33', a, b);
}
    );
    ob.trigger('sub3', 6, 7);
    // 取消订阅所有的sub3ob.off('sub3');
    // 订阅一次就自行取消订阅ob.once('sub4', (a, b) =>
 {
     console.log('sub4', a, b);
}
    );
    ob.trigger('sub4', 8, 9);
    

总结

到此这篇关于js简单粗暴的发布订阅的文章就介绍到这了,更多相关js简单发布订阅内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • JavaScript设计模式之观察者模式(发布者-订阅者模式)
  • JS模式之简单的订阅者和发布者模式完整实例
  • JavaScript中发布/订阅模式的简单实例
  • JavaScript事件发布/订阅模式原理与用法分析
  • JavaScript实现与使用发布/订阅模式详解
  • js 发布订阅模式的实例讲解
  • js实现的订阅发布者模式简单示例
  • JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
  • [js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
  • js设计模式之代理模式及订阅发布模式实例详解

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: javascript代码实现简易计算器下一篇:JS中循环遍历数组的四种方式总结猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: js简单粗暴的发布订阅示例代码
本文地址: https://pptw.com/jishu/594214.html
C语言函数基础知识有哪些? 数组指针的用法有哪些?

游客 回复需填写必要信息