还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。
No.内容链接1Openlayers 【入门教程】 - 【源代码+示例300+】 2Leaflet 【入门教程】 - 【源代码+图文示例 150+】 3Cesium 【入门教程】 - 【源代码+图文示例200+】 4MapboxGL【入门教程】 - 【源代码+图文示例150+】 5前端就业宝典 【面试题+详细答案 1000+】
文章目录
Node.js 中的
EventEmitter
是一个内置模块,它提供了一种简单的方式来创建和管理事件。几乎所有的Node.js异步操作都是基于事件驱动的,而
EventEmitter
类就是这一切的基础。通过它,你可以定义自定义事件,并监听这些事件的发生,以此来实现代码的解耦和异步通信。
EventEmitter 基本使用
引入 EventEmitter
首先,需要从
events
模块引入
EventEmitter
。
const EventEmitter =require('events');
创建 EventEmitter 实例
接下来,创建一个
EventEmitter
的实例。
const myEmitter =newEventEmitter();
注册事件监听器
使用
on
或
addListener
方法注册事件监听器。这些方法接受两个参数:事件名称和当事件触发时要执行的回调函数。
myEmitter.on('event',()=>{
console.log('事件触发了!');});
触发事件
使用
emit
方法触发一个事件,传递给事件处理程序的任何参数都将被传递给监听器。
myEmitter.emit('event');// 输出: 事件触发了!
示例代码
下面是一个更具体的例子,展示了如何使用
EventEmitter
来实现简单的消息发布/订阅模式。
const EventEmitter =require('events');classPubSubextendsEventEmitter{}const pubsub =newPubSub();// 订阅 'message' 事件
pubsub.on('message',(data)=>{
console.log(`接收到消息: ${data}`);});// 发布一条消息setTimeout(()=>{
pubsub.emit('message','Hello, this is a message!');},2000);
console.log('等待消息...');
注意事项
- 事件名:事件名可以是除了
'newListener'
和'removeListener'
之外的任意字符串。 - 监听器限制:默认情况下,每个事件最多可以有10个监听器。可以通过
emitter.setMaxListeners(n)
方法来改变这个限制。 - 移除监听器:可以使用
off
或removeListener
移除监听器,也可以使用once
添加仅执行一次的监听器。 - 内存泄漏:忘记移除不再使用的监听器可能导致内存泄漏。使用
once
或在适当的时候调用removeListener
可以避免这个问题。
EventEmitter
是Node.js事件驱动编程的核心,熟练掌握它对于构建可扩展、松耦合的Node.js应用至关重要。
版权归原作者 还是大剑师兰特 所有, 如有侵权,请联系我们删除。