当前位置:首页 > 日记 > 正文

js 发布订阅模式的实例讲解

js 发布订阅模式的实例讲解

废话不多说,直接上代码

//发布订阅模式class EventEmiter{  constructor(){    //维护一个对象    this._events={    }  }  on(eventName,callback){    if( this._events[eventName]){      //如果有就放一个新的      this._events[eventName].push(callback);    }else{      //如果没有就创建一个数组      this._events[eventName]=[callback]    }  }  emit(eventName,...rest){    if(this._events[eventName]){ //循环一次执行      this._events[eventName].forEach((item)=>{        item.apply(this,rest)      });    }  }  removeListener(eventName,callback){    if(this._events[eventName]){      //当前数组和传递过来的callback相等则移除掉      this._events[eventName]=        this._events[eventName].filter(item=>item!==callback);    }  }  once(eventName,callback){    function one(){      //在one函数运行原来的函数,只有将one清空      callback.apply(this,arguments);      //先绑定 执行后再删除      this.removeListener(eventName,one);    }    this.on(eventName,one);      //此时emit触发会执行此函数,会给这个函数传递rest参数  }}class Man extends EventEmiter{}let man=new Man()function findGirl() {  console.log('找新的女朋友')}function saveMoney() {  console.log('省钱')}man.once('失恋',findGirl);//man.on('失恋',findGirl) //失恋 ,绑定一个函数方法man.on('失恋',saveMoney)//失恋 ,绑定一个函数方法man.removeListener('失恋',saveMoney); //移除一个函数方法man.emit('失恋');//绑定一次,触发多次,也只执行一次。触发后一次将数组中的哪一项删除掉下次触发就不会执行

以上这篇js 发布订阅模式的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关文章

jQuery 循环遍历改变a标签的href |

jQuery 循环遍历改变a标签的href |

循环,遍历,标签,实例,电脑软件,把info类下面所有的a标签链接后天加"#article"。jQuery(document).ready(function($){  $('.info a').each(function(){    let Ahref = $(this).html() + "#article";    $(this).attr("hr…

微信小程序引用公共js里的方法的实

微信小程序引用公共js里的方法的实

引用,方法,详解,实例,程序,微信小程序引用公共js里的方法的实例详解一个小程序页面由四个文件组成,一个小程序页面的四个文件具有相同路径与文件名,由此我们可知一个小程序页面对应着一个跟页面同名的js文件。可是当有些公共方法,我们想抽离出…

Photoshop合成动感喷溅效果的红玫

Photoshop合成动感喷溅效果的红玫

教程,裙子,动感,海报,效果,使用Photoshop合成动感喷溅效果的红玫瑰花裙子海报,本教程合成的效果图非常大气,也非常有艺术感。主体部分为穿红玫瑰花裙子的美女,作者给玫瑰花裙子边缘增加了一些喷溅效果,背景部分增加了一些高光素材,其它部分增加…

微信小程序 解析网页内容详解及实

微信小程序 解析网页内容详解及实

网页内容,详解,实例,程序,电脑软件,微信小程序 解析网页内容详解最近在写一个爬虫,需要将网页进行解析供微信小程序使用。文字和图片解析都好说,小程序也有对应的text和image标签可以呈现。而更复杂的,比如表格,则比较棘手,不管是服务端解析还是…

wps演示如何保存为视频格式

wps演示如何保存为视频格式

方法,保存为,视频格式,演示,电脑软件,  在制作完一部幻灯片时候,往往需要保存下来,那么如何将幻灯片文档转换成视频格式保存下来呢?下面小编就为你介绍wps演示保存为视频格式的方法,希望能帮到大家。wps演示保存为视频格式的方法wps演示保存…

古典的悲伤个性签名集锦

古典的悲伤个性签名集锦

个性签名,悲伤,古典,集锦,热门,  网络时代,几乎每个人都有自己的QQ号,每个QQ号都有属于自己的个性签名。很多人喜欢古典的悲伤个性签名。接下来由小编为大家推荐古典的悲伤个性签名,希望对你有所帮助!古典的悲伤个性签名【经典篇】1.直道…

解决jQuery ajax动态新增节点无法

解决jQuery ajax动态新增节点无法

节点,点击事件,动态,电脑软件,jQuery,在写ajax加载数据的时候发现,后面添加进来的demo节点元素,失去了之前的点击事件。为什么点击事件失效,我们该怎么去解决呢?其实最简单的方法就是直接在标签中写onclick="",但是这样写其实是有点low的,最好…

excel2007怎么能粘贴怎么办

excel2007怎么能粘贴怎么办

复制粘贴,处理方法,电脑软件,  我们在粘贴数据的时候,经常会遇到:“excel 无法粘贴信息,原因是复制区域与粘贴区域形状不同”的提示,那么如何解决这个问题呢?下面小编马上就告诉大家Excel2007复制粘贴的处理方法,希望小编整理的资…

ppt2013如何动画窗格图文教程

ppt2013如何动画窗格图文教程

动画,图文教程,窗格,使用方法,电脑软件,  ppt2013动画窗格知道怎么用吗 ?其实动画窗格里面有很多动画元素,例如设置幻灯片自动播放,那么大家知道怎么设置呢? 下面小编就为你提供ppt2013如何设置自动播放 的方法啦!ppt2013动画窗格的使用方…

JavaScript箭头函数_动力节点Java

JavaScript箭头函数_动力节点Java

节点,学院,函数,箭头,动力,ES6标准新增了一种新的函数:Arrow Function(箭头函数)。为什么叫Arrow Function?因为它的定义用的就是一个箭头:x => x * x上面的箭头函数相当于:function (x) { return x * x;}在继续学习箭头函数之前,请测试你的浏览器…

js实现数组内数据的上移和下移的实

js实现数组内数据的上移和下移的实

数组,数据,实例,电脑软件,js,实例如下所示:var swapItems = function(arr, index1, index2){  arr[index1] = arr.splice(index2,1,arr[index1])[0]  return arr}var arr = [1,2,3]var newArr = []upData (arr, index) {  if (this.ar…

jQuery代码实现实时获取时间

jQuery代码实现实时获取时间

代码实现,获取时间,实时,电脑软件,jQuery,在上篇文章给大家介绍了jQuery动态地获取系统时间实现代码,大家可以参考下。废话不多说了,直接给大家贴代码了,具体代码如下所示:$(document).ready(function(){function time(){var date=new Date();v…