Node.js Event emitter 详解( 示例代码 )

2024-06-04 4580阅读

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

Node.js Event emitter 详解( 示例代码 ) 第1张

No.内容链接
1Openlayers 【入门教程】 - 【源代码+示例300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3Cesium 【入门教程】 - 【源代码+图文示例200+】
4MapboxGL【入门教程】 - 【源代码+图文示例150+】
5前端就业宝典 【面试题+详细答案 1000+】

Node.js Event emitter 详解( 示例代码 ) 第2张

文章目录

      • EventEmitter 基本使用
        • 引入 EventEmitter
        • 创建 EventEmitter 实例
        • 注册事件监听器
        • 触发事件
        • 示例代码
        • 注意事项

          Node.js Event emitter 详解( 示例代码 ) 第3张

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

          EventEmitter 基本使用

          引入 EventEmitter

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

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

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

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

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

          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) 方法来改变这个限制。
          • 移除监听器:可以使用 off 或 removeListener 移除监听器,也可以使用 once 添加仅执行一次的监听器。
          • 内存泄漏:忘记移除不再使用的监听器可能导致内存泄漏。使用 once 或在适当的时候调用 removeListener 可以避免这个问题。

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


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]