Node.js 事件发射器
如果您在浏览器中使用过 JavaScript,您就会知道用户交互的很大一部分是通过事件处理的:鼠标点击、键盘按键、对鼠标移动的反应等等。
在后端,Node.js 为我们提供了使用 events
模块 构建类似系统的选项。
该模块特别提供了 EventEmitter
类,我们将使用它来处理我们的事件。
您可以使用以下方法初始化它:
const EventEmitter = require('node:events');
const eventEmitter = new EventEmitter();
此对象公开了一些方法,包括 on
和 emit
方法。
emit
用于触发事件on
用于添加一个回调函数,该函数将在事件触发时执行
例如,让我们创建一个 start
事件,为了提供一个示例,我们通过将其记录到控制台来对它做出反应
eventEmitter.on('start', () => {
console.log('started');
});
当我们运行时
eventEmitter.emit('start');
事件处理程序函数被触发,我们得到控制台日志。
您可以通过将它们作为附加参数传递给 emit()
来将参数传递给事件处理程序
eventEmitter.on('start', number => {
console.log(`started ${number}`);
});
eventEmitter.emit('start', 23);
多个参数
eventEmitter.on('start', (start, end) => {
console.log(`started from ${start} to ${end}`);
});
eventEmitter.emit('start', 1, 100);
EventEmitter 对象还公开了一些其他方法来与事件交互,例如
once()
:添加一个一次性监听器removeListener()
/off()
:从事件中删除事件监听器removeAllListeners()
:删除事件的所有监听器
您可以在 官方文档 中阅读有关这些方法的更多信息。