Node.js实战9:用EventEmitter触发和响应事件。
Nodejs有一个重要的事件模块:EventEmitter。
它在Nodejs的内置及第三方模块中被大量使用,许多Nodejs项目的架构都是用它实现的。
可见,EventEmitter对于学习NodeJS非常重要。
下面,我们通过例程来理解和掌握EventEmitter。
var EventEmitter = require('events').EventEmitter; var event = new EventEmitter();
//触发some_event事件setTimeout(function() { event.emit('some_event'); }, 1000);
//响应some_event事件event.on('some_event', function() { console.log('some_event 事件触发'); });
这段代码,先初始化一个EventEmitter的实例,然后一秒后,触发一个事件,事件名称是some_event,并且在这个事件的响应函数中输出信息。
执行效果如图所示:
EventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。
当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递,如下例:
执行效果:
以上例子中,emitter 为事件 someEvent 注册了两个事件监听器,然后触发了 someEvent 事件。
运行结果中可以看到两个事件监听器回调函数被先后调用。 这就是EventEmitter最简单的用法。
如果你之前接触过NodeJS,是不是会有熟悉的感觉?比如Express中,常见的connection方法。就是用这种方式构建的。
Node.js实战9:用EventEmitter触发和响应事件。的更多相关文章
- Node.js实战(十)之EventEmitter
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列. Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs. ...
- Node.js实战(九)之事件循环
Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高. Node.js 几乎每一个 API 都是支持回调函数的. Node ...
- 《Node.js实战(双色)》作者之一——吴中骅访谈录
- iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备
安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...
- Node.js实战(二)之HelloWorld示例
经过前面的Node.js实战(一)之概述 想必你应该对Node.js的概念.应用场景.优缺点等有个大致的了解,同时你本地Windows或者Linux上已经准备好了Node.js环境. 下面我们来进入每 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404), ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON
视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源
视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...
随机推荐
- 锁,Event,semaphore
GIL:全局解释锁:无论开启多少个线程,同一时刻只允许执行一个线程运行(解释器级别,保护数据)锁:两种状态,锁定和未锁定,仅支持两个函数,获得锁和释放锁 多线程抢夺锁时,当某个线程获得锁了,其他的锁都 ...
- CCPC-Wannafly Winter Camp Day1 爬爬爬山 (最短路)
题目描述 爬山是wlswls最喜欢的活动之一. 在一个神奇的世界里,一共有nn座山,mm条路. wlswls初始有kk点体力,在爬山的过程中,他所处的海拔每上升1m1m,体力会减11点,海拔每下降1m ...
- deviceiocontrol与ioctl
驱动配置设置,配置 ioctl --linux 平台 https://blog.csdn.net/coolwriter/article/details/78242256
- html2canvas 把h5网页保存为图片 区域保存
html2canvas 把h5网页保存为图片 想把一个网页得某些元素,绘制成图片保存,有些数据是接口动态加载的,所以不能UI给到图片,需要我们把api的数据也绘制到图片上 html2canvas这个插 ...
- Python---进阶---捕获异常
一.编写一个计算减法的方法,当第一个数小于第二个数时,抛出“被减数不能小于减数”的异常 ------------------------------------------------- def ji ...
- MySQL数据库2表的增删改查
目录 一.数据表(文件): 1.1增 1.2查看表内数据 1.3改 1.4删除列表 1.5查看库内列表及表结构 1.6复制表结构 二.列类型:(*********) 2.1数字 2.2字符串 2.3时 ...
- 【leetcode】410. Split Array Largest Sum
题目如下: Given an array which consists of non-negative integers and an integer m, you can split the arr ...
- Element ui 中的Upload用法
效果图: 代码:
- CF543B Destroying Roads 枚举 + 思维 + BFS
Code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in", ...
- codeforces 868C - Qualification Rounds(构造)
原题链接:http://codeforces.com/problemset/problem/868/C 题意:有k个队伍参加比赛,比赛有n个预选的题目,有些队伍对已经事先知道了一些题目.问能不能选出若 ...