事件绑定一个事件名称对应多个事件函数 应此它们的关系是一对多的关系 数据类型采用对象的形式
key:val 因为函数有多个 所以val选用数组
 
事件仓库
  eventList = {
    key:val,
    key:val
  }
绑定事件
on(eventName,cb){}
 
第一步判断当前事件是否存在 如果不存在 初始化一下 key:[] 然后在将cb push到数据中去即可
let eventList = {};

const $on=(eventName,cb)=>{

    if(!eventList[eventName]){
eventList[eventName] = [];
}
eventList[eventName].push(cb)
}
 
触发事件
emit(eventName,params){}
 
第一步判断事件名称是否存在 如果存在 遍历数组中的所以函数调用即可 如果params存在 将params传递函数中
const $emit = (eventName,params)=>{

    if(eventList[eventName]){
let arr = eventList[eventName];
arr.map((cb)=>{
cb(params)
})
}
}
 
解绑事件
off(eventName,cb){}
第一步判断事件名称是否存在 如果存在 再次判断第二个参数是否存在 如果存在将这个cb从当前数组中移除 如果第二个参数不存在 清空数据
const $off = (eventName,cb)=>{
if(eventList[eventName]){
if(cb){
let index = eventList[eventName].indexOf(cb);
eventList[eventName].splice(index,1); }else{
eventList[eventName].length = 0; }
}
}
 
 
 
 

封装nodeJS中 $on $emit $off 事件的更多相关文章

  1. 深入理解nodejs的异步IO与事件模块机制

    node为什么要使用异步I/O 异步I/O的技术方案:轮询技术 node的异步I/O nodejs事件环 一.node为什么要使用异步I/O 异步最先诞生于操作系统的底层,在底层系统中,异步通过信号量 ...

  2. 基本event封装:阻止冒泡、默认事件等

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> ...

  3. js 事件相关 事件处理 封装 事件封装 DOM 0 2 3 级事件

    1.绑定 function(element, type, handler){        if (element.addEventListener) {            element.add ...

  4. swift项目第六天:中间发布按钮的封装以及监听点击事件

    import UIKit /* 总结:1:给UIButton写分类,新建文件swiftFile,一般为了区分起名字都是名字-Extension,要想调用UI控件需要导入 import UIKit框架, ...

  5. Nodejs中的this

    以下内容都是关于在nodejs中的this而非javascript中的this,nodejs中的this和在浏览器中javascript中的this是不一样的. 在全局中的this console.l ...

  6. CORS Cookie,和nodejs中的具体实现

    CORS(跨来源资源共享协议),高级浏览器(Chrome,firefox, opera, safir, ie10)在 XMLHttpRequest(AJAX) 中已经支持了这个协议.可以实现ajax跨 ...

  7. 封装常用的跨浏览器的事件对象EventUtil

    var EventUtil = { addHandler: function(element,type,handler) { //事件监听 if(element.addEventListener) { ...

  8. mySql配置在nodejs中使用

    mySql安装完成后,配置链接nodejs项目中的数据库. 1.测试是否安装成功. 2.use nodejs使用nodejs 3.设置数据源 5.exit

  9. Etag缓存在PHP和NodeJS中的实现

    HTTP 提供了许多页面缓存的方案,其中属 Etag 和 Last-Modified 应用最广.本文会先介绍 Etag 的应用场景,然后说说他在 php 和 node 中的使用. 本文地址:http: ...

随机推荐

  1. C# 知识点回忆..

    方便查阅: 数据结构与算法 1.线性表: (1)数据结构2 - 线性表 (2)数据结构和算法 c#– 1.单项链表 委托和事件 委托1:C#4.0图解教程 - 第15章 委托 委托2:<C#本质 ...

  2. 使用HttpWebRequest请求https链接时,无法访问的问题,设置ServicePointManager.SecurityProtocol安全协议

    //请求前设置一下使用的安全协议类型 System.Net if (url.StartsWith("https", StringComparison.OrdinalIgnoreCa ...

  3. java.lang.UnsatisfiedLinkError解决方法汇集(转载)

    我的解决方法: 将sigar.jar拷贝到/WEB-INF/lib/下,但这个方法不知道是不是终极解决办法,暂时没问题,其他方法可参考下面. 运行JSP报表程序页面出现java.lang.Unsati ...

  4. C++11 带来的新特性 (3)—— 关键字noexcept

    1 关键字noexcept 从C++11开始,我们能看到很多代码当中都有关键字noexcept.比如下面就是std::initializer_list的默认构造函数,其中使用了noexcept. co ...

  5. xiao_ren

  6. UOJ#348. 【WC2018】州区划分

    原文链接www.cnblogs.com/zhouzhendong/p/UOJ348.html 前言 第一次知道子集卷积可以自己卷自己. 题解 这是一道子集卷积模板题. 设 $sum[S]$ 表示点集 ...

  7. UOJ#75. 【UR #6】智商锁 随机化算法 矩阵树定理

    原文链接www.cnblogs.com/zhouzhendong/p/UOJ75.html 前言 根本没想到. 题解 首先我们可以考虑一种做法: 找一些图,使得他们各自的生成树个数乘起来等于 k. 那 ...

  8. 我们为什么不用 Select * 吗?

    应用程序慢如牛,原因多多,可能是网络的原因.可能是系统架构的原因,还有可能是数据库的原因. 那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们 ...

  9. 2018-2019网络对抗技术 20165220 Exp4 恶意代码分析

    实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systracer套件. ...

  10. java自动化-数据驱动junit演示,下篇

    本文旨在帮助读者介绍,如何使用excle实现数据驱动 本文是上文https://www.cnblogs.com/xuezhezlr/p/9096063.html的继续,如果没看上文建议自己看一下,对理 ...