📜  节点 js 事件发射器 - Javascript (1)

📅  最后修改于: 2023-12-03 15:27:45.169000             🧑  作者: Mango

节点 js 事件发射器 - Javascript

事件是在前端开发中经常使用的一种机制,常常用于在不同组件之间进行通信,大大提高了代码的可复用性和可维护性。由此,开发了事件发射器(Event Emitter)机制,而在 Node.js 中,事件发射器被内置在核心模块 events 中。

什么是事件发射器?

事件发射器是一种可以监听和触发事件的机制,它包含两个主要的部分:事件监听器和事件触发器。事件监听器用于监听特定事件的发生,而事件触发器则用于触发这个事件的发生。事件目标对象称为“发射器”。

如何使用事件发射器?

使用事件发射器需要进行以下步骤:

  1. 引入核心模块 events

  2. 创建一个 EventEmitter 对象,它是事件发射器的实例。

    const { EventEmitter } = require('events');
    const myEmitter = new EventEmitter();
    
  3. (可选)使用 on 方法或 addListener 方法监听事件。

    myEmitter.on('myEvent', () => {
      console.log('An event occurred!');
    });
    
  4. 使用 emit 方法触发事件。

    myEmitter.emit('myEvent');
    

    在上面的示例中,使用 on 方法或 addListener 方法为事件 myEvent 注册了一个回调函数,当该事件被触发时,该回调函数将被调用。

    emit 方法用于触发事件 myEvent 的发生。这个过程会触发所有注册了与事件名称对应的回调函数。

如何移除事件监听?

我们可以通过 removeListener 方法、removeAllListeners 方法和 off 方法来移除事件的监听器。

  • removeListener(event, listener):从特定事件的监听器数组中移除一个监听器。
  • removeAllListeners([event]):从事件的所有监听器数组中移除所有监听器。
  • off(event, listener):从特定事件的监听器数组中移除一个监听器。
代码示例

下面是一个完整的示例,展示了如何使用事件发射器。

const { EventEmitter } = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('myEvent', () => {
  console.log('An event occurred!');
});

myEmitter.on('myEvent', () => {
  console.log('Another event occurred!');
});

myEmitter.emit('myEvent');

在这个示例中,当 myEvent 事件被触发时,两个监听器都会执行,输出:

An event occurred!
Another event occurred!
结论

事件发射器是一个十分强大的机制,可以极大地提高代码的可维护性和可扩展性。在实际开发中,我们常常借助它来实现组件间的通信,以提高代码的复用性和可读性。虽然需要一定的学习成本,但只要掌握了它的基本用法,就能事半功倍。