全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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 发布订阅模式的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# js  # 发布订阅  # JavaScript事件发布/订阅模式原理与用法分析  # JavaScript实现与使用发布/订阅模式详解  # JavaScript中发布/订阅模式的简单实例  # JS前端设计模式之发布订阅模式详解  # JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例  # JavaScript设计模式之观察者模式与发布订阅模式详解  # 详解JavaScript设计模式中的享元模式  # JavaScript设计模式之单例模式应用场景案例详解  # JavaScript 设计模式 安全沙箱模式  # JavaScript设计模式之观察者模式(发布者-订阅者模式)  # javascript 发布-订阅模式 实例详解  # 绑定  # 给大家  # 一个函数  # 移除  # 希望能  # 如果没有  # 会给  # 这篇  # 多说  # 创建一个  # 小编  # 大家多多  # 清空  # 组中  # 删除掉  # 下次  # 哪一项  # _events  # span  # pre 


相关文章: 如何续费美橙建站之星域名及服务?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  制作国外网站的软件,国外有哪些比较优质的网站推荐?  山东网站制作公司有哪些,山东大源集团官网?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  建站主机选择指南:服务器配置与SEO优化实战技巧  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  C#如何在一个XML文件中查找并替换文本内容  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何通过西部数码建站助手快速创建专业网站?  如何在宝塔面板创建新站点?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  制作网站的基本流程,设计网站的软件是什么?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  如何通过cPanel快速搭建网站?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  制作表格网站有哪些,线上表格怎么弄?  学校建站服务器如何选型才能满足性能需求?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  如何选择适合PHP云建站的开源框架?  制作企业网站建设方案,怎样建设一个公司网站?  如何零基础在云服务器搭建WordPress站点?  如何通过虚拟机搭建网站?详细步骤解析  如何快速生成凡客建站的专业级图册?  PHP 500报错的快速解决方法  寿县云建站:智能SEO优化与多行业模板快速上线指南  微信推文制作网站有哪些,怎么做微信推文,急?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何高效完成自助建站业务培训?  网站制作说明怎么写,简述网页设计的流程并说明原因?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何通过FTP空间快速搭建安全高效网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  建站之星免费版是否永久可用?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  微课制作网站有哪些,微课网怎么进?  行程制作网站有哪些,第三方机票电子行程单怎么开?  建站主机如何选?高性价比方案全解析  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  如何快速搭建响应式可视化网站?  javascript基本数据类型及类型检测常用方法小结  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  内部网站制作流程,如何建立公司内部网站?  一键网站制作软件,义乌购一件代发流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。