当前位置: 首页 > article >正文

Node events模块

文章目录

  • Node events模块
    • 概述
    • 用法
      • 监听和触发事件
      • 单次监听
      • 删除监听器
      • 事件参数

Node events模块

概述

Node.js 的 events 模块是其核心模块之一,用于实现事件驱动编程。它提供了一个 EventEmitter 类,允许你创建、触发和监听自定义事件。事件驱动是 Node.js 非阻塞 I/O 模型的基础,广泛应用于网络请求、文件操作、流处理等场景。

用法

监听和触发事件

  • 使用 emit() 触发事件。
  • 使用 on() 或 addListener() 监听事件。
// 引入模块
const events = require('events');
// 创建EventEmitter实例
const myEmitter = new events.EventEmitter();
// 监听事件
myEmitter.on('greet', (name) => {
    console.log(`Hello, ${name}!`);
});
// 触发事件
myEmitter.emit('greet', '小明');
myEmitter.emit('greet', '小白');

// Hello, 小明!
// Hello, 小白!

单次监听

  • once():监听事件,仅触发1次。
  • 触发后会自动移除监听器。
const events = require('events');
const myEmitter = new events.EventEmitter();
// 单次监听
myEmitter.once('greet', (name) => {
    console.log(`Hello, ${name}!`);
});

myEmitter.emit('greet', '小明');
myEmitter.emit('greet', '小白');

// Hello, 小明! 

删除监听器

  • removeListener():删除指定监听器。
  • removeAllListener():删除所有监听器。
const events = require('events');
const myEmitter = new events.EventEmitter();
const listener = (name) => {
    console.log(`Hello, ${name}!`);
};
myEmitter.on('greet', listener);
myEmitter.emit('greet', '小明');
myEmitter.emit('greet', '小白');
// 删除监听器
myEmitter.removeListener('greet', listener);
myEmitter.emit('greet', '小黑');

// Hello, 小明!
// Hello, 小白!

事件参数

  • 当传递多个参数时,可以依次声明形参,也可以使用 ...args 不定长参数。
const events = require('events');
const myEmitter = new events.EventEmitter();
myEmitter.on('greet', (...args) => {
    console.log(`姓名:${args[0]} 年龄:${args[1]} 性别:${args[2]}`);
});
myEmitter.emit('greet', '小明', 18, true);

// 姓名:小明 年龄:18 性别:true
const events = require('events');
const myEmitter = new events.EventEmitter();
myEmitter.on('greet', (name,age,sex) => {
    console.log(`姓名:${name} 年龄:${age} 性别:${sex}`);
});
myEmitter.emit('greet', '小明', 18, true);

// 姓名:小明 年龄:18 性别:true

http://www.kler.cn/a/553168.html

相关文章:

  • ImportError: cannot import name ‘FixtureDef‘ from ‘pytest‘
  • 长文档处理痛点:GPT-4 Turbo引文提取优化策略与替代方案讨论
  • Linux 的基本命令
  • 使用 Ansys HFSS 对植入式医疗设备进行无线电力传输和 SAR 仿真
  • 美团将为全职及稳定兼职骑手缴纳社保,未来将覆盖所有骑手
  • Python基于Flask的豆瓣Top250电影数据可视化分析与评分预测系统(附源码,技术说明)
  • springboot使用XxlJob定时任务框架
  • php文件包含
  • JAVA 集成 ElasticSearch
  • 【STM32H743IIT6】正点原子阿波罗TFTLCD移植
  • Python高级语法之selenium
  • 服务器部署基于Deepseek的检索增强知识库
  • AllData数据中台核心菜单十三:数据湖平台
  • deepseek-r1系列模型部署分别需要的最低硬件配置
  • 解析DrugBank数据库数据|Python
  • KTransformers如何通过内核级优化、多GPU并行策略和稀疏注意力等技术显著加速大语言模型的推理速度?
  • JVM 类加载器深度解析(含实战案例)
  • 有名管道的空间大小
  • [实现Rpc] 消息抽象层的具体实现
  • IO进程 day01