博客
关于我
Node.js Event emitter 详解( 示例代码 )
阅读量:794 次
发布时间:2023-02-16

本文共 1564 字,大约阅读时间需要 5 分钟。

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

在这里插入图片描述

No. 大剑师精品GIS教程推荐
0 地图渲染基础- - -
1 Openlayers -
2 Leaflet -
3 MapboxGL -
4 Cesium -
5 threejs -
6 Shader 编程
7 Geoserver
8 卫星应用开发教程
9 GIS数字孪生与大模型
10 报表与数字大屏 - -

文章目录


在这里插入图片描述

Node.js 中的 EventEmitter 是一个内置模块,它提供了一种简单的方式来创建和管理事件。几乎所有的Node.js异步操作都是基于事件驱动的,而 EventEmitter 类就是这一切的基础。通过它,你可以定义自定义事件,并监听这些事件的发生,以此来实现代码的解耦和异步通信。

EventEmitter 基本使用

引入 EventEmitter

首先,需要从 events 模块引入 EventEmitter

const EventEmitter = require('events');
创建 EventEmitter 实例

接下来,创建一个 EventEmitter 的实例。

const myEmitter = new EventEmitter();
注册事件监听器

使用 onaddListener 方法注册事件监听器。这些方法接受两个参数:事件名称和当事件触发时要执行的回调函数。

myEmitter.on('event', () => {     console.log('事件触发了!');});
触发事件

使用 emit 方法触发一个事件,传递给事件处理程序的任何参数都将被传递给监听器。

myEmitter.emit('event'); // 输出: 事件触发了!

示例代码

下面是一个更具体的例子,展示了如何使用 EventEmitter 来实现简单的消息发布/订阅模式。

const EventEmitter = require('events');class PubSub extends EventEmitter {   }const pubsub = new PubSub();// 订阅 '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) 方法来改变这个限制。
  • 移除监听器:可以使用 offremoveListener 移除监听器,也可以使用 once 添加仅执行一次的监听器。
  • 内存泄漏:忘记移除不再使用的监听器可能导致内存泄漏。使用 once 或在适当的时候调用 removeListener 可以避免这个问题。

EventEmitter 是Node.js事件驱动编程的核心,熟练掌握它对于构建可扩展、松耦合的Node.js应用至关重要。

转载地址:http://tsjfk.baihongyu.com/

你可能感兴趣的文章
Nginx访问控制_登陆权限的控制(http_auth_basic_module)
查看>>
nginx访问控制配置
查看>>
nginx负载均衡和反相代理的配置
查看>>
nginx负载均衡器处理session共享的几种方法(转)
查看>>
nginx负载均衡的5种策略
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
Nginx负载均衡(upstream)
查看>>
nginx转发端口时与导致websocket不生效
查看>>
Nginx运维与实战(二)-Https配置
查看>>
Nginx部署_mysql代理_redis代理_phoenix代理_xxljob代理_websocket代理_Nacos代理_内网穿透代理_多系统转发---记录021_大数据工作笔记0181
查看>>
Nginx配置Https证书
查看>>
Nginx配置ssl实现https
查看>>
Nginx配置TCP代理指南
查看>>
Nginx配置——不记录指定文件类型日志
查看>>
nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
nginx配置全解
查看>>
Nginx配置参数中文说明
查看>>
Nginx配置后台网关映射路径
查看>>