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