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:初 ...
随机推荐
- 20165236 实验四 Android程序设计
20165236 实验四 Android程序设计 一.实验报告 课程:Java程序设计 班级:1652班 姓名:郭金涛 学号:20165236 指导教师:娄嘉鹏 实验 ...
- 前端框架之Vue(8)-表单输入绑定
基础用法 你可以用 v-model 指令在表单 <input> . <textarea> 及 <select> 元素上创建双向数据绑定.它会根据控件类型自动选取正确 ...
- cube-ui中弹窗
if (!this.surname) { this.$createDialog({ type: "alert", icon: "cubeic-close", s ...
- window下git的下载
window下git的下载window下git的下载window下git的下载window下git的下载 https://git-scm.com/download/win https://git-sc ...
- 6个炫酷又好用的 Python 工具,个个都很奔放呀
贝多芬写完<第九交响曲>后说:it's done:耶稣在被处死前说:it is done:<指环王>结尾摧毁魔戒后Frodo说:it's done! 我整理完这6个Python ...
- jenkins 邮箱配置---腾讯企业邮箱
一,简单设置 1.登陆jenkins--> 系统管理 ---> 系统设置 2.邮箱就是发送者的邮箱,密码是登陆邮箱的密码 3.设置完以后,可以点击‘test configuration’, ...
- PS教程:如何批量处理图片
1.我们先准备两个文件夹,一个用来装你要处理的图片,可以是几百上千张,另一个是空文件夹,用来装等下处理好的图片. 2.打开PS,打开未处理文件夹里的任何一张图片. 3. 在红圈中点击,新建一个动作. ...
- iOS 开发笔记-Objective-C之KVC、KVO
概述 键值编码(KVC).键值监听(KVO)特性 键值监听KVO Key Value Observing(简称KVO)其实是一种观察者模式,利用它可以很容易实现视图组件和数据模型的分离,当数据模型的属 ...
- 例子:动能并不是特别强(2-3)后,下M5的同时,也是恢复期到期的前一天
动能并不是特别强(2-3)后,下M5的同时,但是恢复期到期 EG.002195 2017/06/23-->2017/06/29
- ASP.NET MVC4中加入Log4Net日志记录功能
前言 在之前的.NET中,微软还没有提供过像样的日志框架,目前能用的一些框架比如Log4Net.NLog.CommonLogging等,虽然多多少少使用起来有点费劲,但这里还是简单分享一下Log4Ne ...