node.js的on、emit、off封装
//绑定事件、触发事件和移除事件
//绑定事件
//on(eventName,cb){} //第一步判断当前事件是否存在,如果不存在则初始化:key:[],然后在将回调函数添加到数据中去
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;
}
}
}
node.js的on、emit、off封装的更多相关文章
- Node.js入门:事件机制
Evented I/O for V8 JavaScript 基于V8引擎实现的事件驱动IO. 事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://n ...
- node.js第一次
随着时代的变迁,日月星辰轮回,不断的有新的事物被创造于世,作为在这个世界活着的前端工程崽的我,最近又接触了一门新手艺“node.js”.自从它2009年诞生至今,被很多前端推崇,我起步已经晚了,还好它 ...
- node.js 异步式I/O 与事件驱动
Node.js 最大的特点就是异步式 I/O(或者非阻塞 I/O)与事件紧密结合的编程模式.这种模式与传统的同步式 I/O 线性的编程思路有很大的不同,因为控制流很大程度上要靠事件和回调函数来组织,一 ...
- node.js开发指南读书笔记(1)
3.1 开始使用Node.js编程 3.1.1 Hello World 将以下源代码保存到helloworld.js文件中 console.log('Hello World!'); console.l ...
- 深入浅出Node.js(上)
(一):什么是Node.js Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟 ...
- koa : Express出品的下一代基于Node.js的web框架
https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501579966a ...
- node.js之web开发 koa入门
用Node.js开发Web服务器端,有几个显著的优势: 速度快,非常快!这得益于Node.js天生是异步的. 常见的Web框架包括:Express,Sails.js,koa,Meteor,DerbyJ ...
- 在用 Node.js 起服务之前,我们应该知道这些
网络分层 了解计算机网络的同学都知道 OSI 七层网络模型和 TCP/IP 模型.OSI 七层模型是理论上的网络通信模型,而 TCP/IP 是现实中的网络通信概念模型.它们之间的对比关系参考下图. 本 ...
- Node.js躬行记(4)——自建前端监控系统
这套前端监控系统用到的技术栈是:React+MongoDB+Node.js+Koa2.将性能和错误量化.因为自己平时喜欢吃菠萝,所以就取名叫菠萝系统.其实在很早以前就有这个想法,当时已经实现了前端的参 ...
- Node.js用ES6原生Promise对异步函数进行封装
Promise的概念 Promise 对象用于异步(asynchronous)计算..一个Promise对象代表着一个还未完成,但预期将来会完成的操作. Promise的几种状态: pending:初 ...
随机推荐
- padStart()方法,padEnd()方法
https://blog.csdn.net/ixygj197875/article/details/79090578
- v-show 和 v-if 对 v-chart的影响
借鉴:https://blog.csdn.net/xiaxiangyun/article/details/78909991 使用v-show控制tab切换 其中一个tab数据请求后显示第二个tab,第 ...
- 向数据库中添加数据,通过se16 不能添加,通过 代码可以添加的原因
1: 在向数据库中添加数据时,通过客户端se16 准备对 数据表进行添加数据,提示如下: 找了以下原因,如下: https://www.baidu.com/link?url=3yRtAfY1_9XG ...
- CentOS在VMware中 网络配置
一. 将centos安装好之后,发现ping, ifconfig等常见的命令都用不了,出现unknown service或command not found这样的字眼,这让我十分无语.查了一下资料,i ...
- 调用另一个文件的python代码【转载】
转自:https://blog.csdn.net/u010412719/article/details/47089883 例如我们有a.py和b.py两个文件,当我们需要在b.py文件中应用a.py中 ...
- BI-LSTM and CRF using Keras
问题1:CUDA_ERROR_OUT_OF_MEMORY: How to activate multiple GPUs from Keras in Tensorflow import keras.ba ...
- 远程访问对象java实现
服务端: 定义远程接口: package com.my.rmi; import java.rmi.Remote; import java.rmi.RemoteException; public int ...
- centos make error: fatal error: curses.h: No such file or directory
yum install ncurses.x86_64 yum install ncurses-devel.x86_64 yum install ncurses-libs.x86_64 yum inst ...
- 「美团外卖APP签约快捷支付」流程体验
§1 添加银行卡 新用户在美团外卖APP订餐支付时,首先要绑定银行卡.如下是“添加银行卡”页,输入卡号后,系统自动调用卡bin库校验卡号的有效性,如果有效会显示发卡行和卡类型(借记卡/贷记卡). 这 ...
- InstallShield2015创建安装包
1.新建 InstallScript MSI Project工程 a)输入项目名称Project Name: XBS(例如) b)输入创建目录Location: C:\(例如) c)如果勾选“ ...