关于Node.js的events.EventEmitter用法介绍
发布时间 - 2026-01-11 00:28:29 点击率:次Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。

Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。
EventEmitter 类
events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。
你可以通过require(“events”);来访问该模块。
// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
EventEmitter 对象如果在实例化时发生错误,会触发 ‘error' 事件。当添加新的监听器时,'newListener' 事件会触发,当监听器被移除时,'removeListener' 事件被触发。
下面我们用一个简单的例子说明 EventEmitter 的用法:
//event.js 文件
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
event.on('some_event', function() {
console.log('some_event 事件触发');
});
setTimeout(function() {
event.emit('some_event');
}, 1000);
执行结果如下:
运行这段代码,1 秒后控制台输出了 ‘some_event 事件触发'。其原理是 event 对象注册了事件 some_event 的一个监听器,然后我们通过 setTimeout 在 1000 毫秒以后向 event 对象发送事件 some_event,此时会调用some_event 的监听器。
$ node event.js
some_event 事件触发
EventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。
当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。
让我们以下面的例子解释这个过程:
//event.js 文件
var events = require('events');
var emitter = new events.EventEmitter();
emitter.on('someEvent', function(arg1, arg2) {
console.log('listener1', arg1, arg2);
});
emitter.on('someEvent', function(arg1, arg2) {
console.log('listener2', arg1, arg2);
});
emitter.emit('someEvent', 'arg1 参数', 'arg2 参数');
执行以上代码,运行的结果如下:
$ node event.js
listener1 arg1 参数 arg2 参数
listener2 arg1 参数 arg2 参数
以上例子中,emitter 为事件 someEvent 注册了两个事件监听器,然后触发了 someEvent 事件。
运行结果中可以看到两个事件监听器回调函数被先后调用。 这就是EventEmitter最简单的用法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# nodejs
# eventemitter
# node
# events.eventemitter
# Node.js原理阻塞和EventEmitter及其继承的运用实战
# node.js如何自定义实现一个EventEmitter
# 从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
# node.js中的events.EventEmitter.listenerCount方法使用说明
# Node.js中的EventEmitter类使用小结
# 会在
# 回调
# 若干个
# 都是
# 是一个
# 你可以
# 让我们
# 这就是
# 这段
# 可以看到
# 只提供
# 最简单
# 大家多多
# 发生错误
# 移除
# 后向
# 此时会
# 来访问
# js
# pre
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速选择适合个人网站的云服务器配置?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
如何在阿里云ECS服务器部署织梦CMS网站?
Java垃圾回收器的方法和原理总结
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
利用JavaScript实现拖拽改变元素大小
如何在Ubuntu系统下快速搭建WordPress个人网站?
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
历史网站制作软件,华为如何找回被删除的网站?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel如何与Pusher实现实时通信?(WebSocket示例)
移动端脚本框架Hammer.js
Laravel如何实现模型的全局作用域?(Global Scope示例)
使用Dockerfile构建java web环境
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
实例解析angularjs的filter过滤器
高端企业智能建站程序:SEO优化与响应式模板定制开发
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
想要更高端的建设网站,这些原则一定要坚持!
中国移动官方网站首页入口 中国移动官网网页登录
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
如何确认建站备案号应放置的具体位置?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
php json中文编码为null的解决办法
Laravel怎么连接多个数据库_Laravel多数据库连接配置
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel如何使用Eloquent进行子查询
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
Angular 表单中正确绑定输入值以确保提交与验证正常工作
Python3.6正式版新特性预览
网站制作报价单模板图片,小松挖机官方网站报价?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何快速重置建站主机并恢复默认配置?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
PHP正则匹配日期和时间(时间戳转换)的实例代码
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】

