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延迟执行

科技分类资讯推荐

平板电脑+AI?荣耀平板MagicPad3的AI到底能做些什么? - 天天要闻

平板电脑+AI?荣耀平板MagicPad3的AI到底能做些什么?

在今年上半年的MWC2025上,荣耀正式公布了阿尔法战略,宣布由手机制造商向AI终端生态公司所转型,在今年,我们已经看到了很多荣耀新品搭载了其最新的AI技术如影像技术AiMAGE、移动AI智能体YOYO等。与此同时,在公布阿尔法战略仅不到半年,荣耀正式更新了其旗舰平板电脑产品MagicPad3,并毫无例外的加入了诸多AI方面的功能,...
高效制作电子画册的优质软件推荐 - 天天要闻

高效制作电子画册的优质软件推荐

高效制作电子画册不仅能节省宝贵时间,还能提升作品的专业品质。作为设计师,我们需要依赖功能强大、操作便捷的工具来实现灵感的快速转化。今天为大家推荐几款在行业内口碑良好的电子画册制作软件,帮助您事半功倍。1.
马云现身比利时大广场低头专注看手机:还带了几个保镖 - 天天要闻

马云现身比利时大广场低头专注看手机:还带了几个保镖

近日,有网友发帖称在比利时布鲁塞尔大广场偶遇阿里巴巴创始人马云,并分享出几张偶遇照片。网友爆料称,马云还带了几个陪同保镖。据拍摄者发布图片显示,当天马云身着白衬衫,搭配同色系休闲裤,正坐在椅子上低头看着手机,神情专注。近年来,“退居二线”的马云不断在国外被网友偶遇,虽然他的生活方式变得如同“闲云野鹤...
蓝宝石推出 NiTRO+ 氮动 B850A / B650A WIFI 主板 - 天天要闻

蓝宝石推出 NiTRO+ 氮动 B850A / B650A WIFI 主板

IT之家 7 月 4 日消息,蓝宝石(蓝宝科技)现已推出 NiTRO+ 氮动 B850A WIFI 和 NiTRO+ 氮动 B650A WIFI 两款姊妹主板。这一对产品从介绍上来看没有明显功能差异,主要区别体现在左上方铝制马甲的装饰风格上。蓝宝石 NiTRO+ B850A / B650A WIFI 主板属于标准 ATX 板型,采用氮动系列家族化极客设计语言
消息称AMD Zen 6 架构引入多层 3D 堆叠缓存 - 天天要闻

消息称AMD Zen 6 架构引入多层 3D 堆叠缓存

IT之家 7 月 4 日消息,消息源 Moore's Law Is Dead(MLID)在最新一期视频中,曝料称 AMD 将变革 Zen 6 架构,通过多层 3D 堆叠缓存,相比较 Zen 5 架构,FP IPC (浮点运算每时钟指令数) 增幅可达到 6~8%。在 Zen 5 架构上,每个 3D V-Cache 层最高可以缓存 64MB,而在 Zen 6 架
格力朱磊:董明珠的影响力不来自于财富,来自于她所创造的财富 - 天天要闻

格力朱磊:董明珠的影响力不来自于财富,来自于她所创造的财富

IT之家 7 月 4 日消息,格力电器市场总监朱磊今日发布微博称,董明珠的影响力不来自于财富,来自于她所创造的财富。朱磊的微博配图显示:2012 年董明珠出任格力电器董事长至今格力电器累计纳税 1741.95 亿元累计向股民分红 1666.56 亿元格力电器创造 48 项国际领先技术专利超 13 万项发明专利授权量连续 8 年位列家电行业第...
开启第四次OTA 超26项升级优化助豹8不断进阶 - 天天要闻

开启第四次OTA 超26项升级优化助豹8不断进阶

6月30日,方程豹豹8迎来了第四次OTA升级,以16项新增功能、10项优化体验,在智能驾驶、AI座舱、动态控制三大领域完成了一次有态度的进化。此次升级,让豹8不仅拥有机械素质铸就的力量感,还能读懂生活的细节,让智能不止于功能堆砌,更是想你所