• Node.js Video Tutorials

NodeJS - eventTarget.addEventListener() 方法


eventTarget.addEventListener() 方法用于在其调用的 EventTarget 上添加指定的监听器。

EventTarget 类在 Node.js 中不可直接使用。相反,您可以使用 events 模块中的 EventEmitter 类来实现类似的功能。

此方法属于 node:events 模块的EventTarget 类。

语法

以下是 NodeJs eventTarget.addListener() 方法的语法:

eventTarget.addEventListener(type, listener [, options])

参数

此方法具有以下三个参数。

  • type:此参数保存一个字符串值,表示要监听的事件类型。
  • listener:当发生指定类型的事件时接收通知的对象。
  • options:(可选)
    • once:布尔值,指示监听器在添加后最多应被调用一次。如果为 true,则在调用监听器后会自动将其移除。
    • passive:布尔值,如果为 true,则表示监听器不会调用 Event 对象的 preventDefault() 方法。
    • capture:布尔值,指示此类型的事件将在分派到任何 EventTarget 之前分派给指定的监听器。这在 Node.js 中没有直接使用,只是为了 API 的完整性而添加的。
    • signal:每当指定的 AbortSignal 对象的 abort() 方法被调用时,监听器将被移除。

返回值

此方法返回事件目标。它允许为一个事件添加多个处理程序,并控制监听器何时被激活。

示例 1

以下是 NodeJs eventTarget.addEventListener() 方法的基本示例。

首先,我们导入了 node:events 模块。然后,我们将带有事件类型“foo”的监听器函数传递给 eventTarget.addEventListener() 方法。

const { EventEmitter, listenerCount } = require('node:events');

function handler(event){
};

const target = new EventTarget();

target.addEventListener('foo', handler);

输出

根据以上程序,我们将一个监听器“handler”添加到事件类型“foo”。

示例 2

在这个程序中,我们正在向 eventTarget.addEventListener() 方法添加两个带有事件类型“foo”的监听器函数。

const { EventEmitter, listenerCount } = require('node:events');

function handler1(event){
};

const handler2 = {
  handleEvent(event) {
    console.log(event.type); // prints foo to the console
  }
};

const target = new EventTarget();

target.addEventListener('foo', handler1);
target.addEventListener('foo', handler2);

输出

根据以上程序,我们将两个事件监听器“handler1”和“handler2”添加到事件类型“foo”。

示例 3

注意:任何指定的监听器仅向“type”事件添加一次,并且每个“capture”可选参数值。

最初,我们导入了 node:events 模块。然后,我们为“foo”事件添加了一个单一的监听器函数“handler”。

const { EventEmitter, listenerCount } = require('node:events');

function handler(event){
};

const target = new EventTarget() 

target.addEventListener('foo', handler, {capture: true});
target.addEventListener('foo', handler, {capture: false});

输出

根据以上程序,监听器“handler”可以分别使用 capture: false 值和 capture: true 值添加一次。

示例 4

注意:在 nodejs 中,我们不能直接使用事件目标来生成输出,我们通常使用 EventEmitter 来处理事件,而不是在浏览器中使用的 EventTarget。

在这个例子中,我们使用 EventEmitter 而不是 EventTarget 导入了 node:events 模块。然后,我们传递了一个带有事件类型“foo”的监听器函数。on 方法用于添加事件监听器,emit 方法触发事件。

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

function handler(event) {
    console.log('Event received:', event);
}

const target = new EventEmitter();

target.on('foo', handler); 
target.emit('foo', { data: 'Some event data' }); 

输出

以上程序产生以下输出:

Event received: { data: 'Some event data' }
nodejs_events.htm
广告
© . All rights reserved.