Node.js实战9:用EventEmitter触发和响应事件

2019年12月08日16:45:12 科技 1674

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 事件触发');
});

Node.js实战9:用EventEmitter触发和响应事件 - 天天要闻

这段代码,先初始化一个EventEmitter的实例,然后一秒后,触发一个事件,事件名称是some_event,并且在这个事件的响应函数中输出信息。

执行效果如图所示:

Node.js实战9:用EventEmitter触发和响应事件 - 天天要闻

EventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。

当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递,如下例:

Node.js实战9:用EventEmitter触发和响应事件 - 天天要闻

执行效果:

Node.js实战9:用EventEmitter触发和响应事件 - 天天要闻

以上例子中,emitter 为事件 someEvent 注册了两个事件监听器,然后触发了 someEvent 事件。

运行结果中可以看到两个事件监听器回调函数被先后调用。 这就是EventEmitter最简单的用法。

如果你之前接触过NodeJS,是不是会有熟悉的感觉?比如Express中,常见的connection方法。就是用这种方式构建的。

更多本系列文章:

Node.js实战8:可用于压缩、加密的zlib

Node.js实战7:你了解buffer吗?

Node.js实战6:定时器,使用timer延迟执行

科技分类资讯推荐

全球发明大会中国区上海开赛,超2000名学生参赛,宇树机器人也穿上赛服 - 天天要闻

全球发明大会中国区上海开赛,超2000名学生参赛,宇树机器人也穿上赛服

7月4日,2024-2025年度全球发明大会中国区(ICC)上海赛区在宝山区青少年活动中心开赛。宇树科技机器人G1与2000多名来自长三角等地区的参赛青少年一样,也穿上赛服跃跃欲试。它还和小发明家一起,与现场观赛的中国科学院院士、上海技术物理研究所研究员、世界电磁波科学界最高奖得主沈学础等握手相拥。沈学础院士与小选手在...
朝阳前瞻布局元宇宙,未来显示产业园等成果批量上新 - 天天要闻

朝阳前瞻布局元宇宙,未来显示产业园等成果批量上新

元宇宙是北京市重点布局的未来产业之一。7月4日,作为全国规模最大、产业链生态最完整的元宇宙(互联网3.0)生态发展集聚区,朝阳区举办2025全球数字经济大会AIGC与元宇宙融合发展论坛。AIGC(人工智能内容生成)工具平台、2025朝阳区元宇宙标杆示范应用场景、元宇宙应用场景示范基地、未来显示产业园、ULive超现场播控中心...
虚假信息面前,AI为何“智商下线”? - 天天要闻

虚假信息面前,AI为何“智商下线”?

□曹欣怡(云南财经大学)7月4日,“DeepSeek给王一博道歉是假的”冲上微博热搜。据称,这家人工智能公司因内容审核疏漏,将王一博与“李爱庆腐败案”不当关联,损害了其名誉,并已作出正式道歉。
无3C标识充电宝“禁飞”首周:民航与铁路安检标准不一 - 天天要闻

无3C标识充电宝“禁飞”首周:民航与铁路安检标准不一

自6月28日起,民航局禁止旅客携带无3C标识及被召回的充电宝乘坐境内航班,另一方面,铁路部门并不查验充电宝3C认证标识或品牌。针对充电宝“禁飞”一周来的落实情况,记者进行了走访调查。济南遥墙国际机场:鼓包或破损的充电宝也“禁飞”7月4日,济南遥墙国际机场工作人员向记者表示,该机场严格执行民航局通知,禁止旅客...
最新!白云机场:充电宝7天内免费暂存 - 天天要闻

最新!白云机场:充电宝7天内免费暂存

今天(7月4日)是民航局充电宝乘机携带新政策正式实施的第6天,记者从广州白云机场获悉,旅客携带不合规充电宝的数量呈明显减少趋势。据悉,白云机场提供充电宝暂存服务供旅客选择,两座航站楼均设有暂存点,7天内免费暂存,7天后视为自弃处理。根据民航局通知要求,为切实保障航空运行安全,6月28日起禁止旅客携带没有3C标...
小鹏G7正式上市 极致AI科技与满配舒适兼得 - 天天要闻

小鹏G7正式上市 极致AI科技与满配舒适兼得

日前,小鹏汽车正式发布全新AI智能家庭SUV——小鹏G7。新车共推出602长续航Max、702超长续航Max、702超长续航Ultra三个版本,上市即刻可以交付。 作为全球首款L3级算力的AI汽车,小鹏G7不仅实现了2250TOPS有效算力以及本地端VLA+VLM大模型的行业首发,更以行业领先的“追光全景”抬头显示、“857”的领先三电配置、太极AI底...