• Node.js Video Tutorials

NodeJS - emitter.listenerCount() 方法


emitter.listenerCount() 方法用于检索监听我们作为参数传递的事件 (eventName) 的监听器数量。

此方法属于Eventemitter 类,它是 node:events 模块的内置类。

语法

以下是 NodeJs emitter.listenerCount() 方法的语法:

emitter.listenerCount(eventName)

参数

此方法只接受一个参数,如下所述。

  • eventName:此方法的参数将保存事件的名称。它可以是字符串或符号。

返回值

(整数) 此方法将返回正在监听我们作为参数传递的事件 (eventName) 的监听器函数的数量。

现在让我们进入在不同场景中使用 Node.js eventemitter.listenerCount() 方法的示例。

示例 1

以下是 NodeJs emitter.listenerCount() 方法的基本示例。

在这个程序中,我们创建了一个带有消息的监听器函数 listener()。然后,我们使用 eventName (event) 作为第一个参数调用 emitter.on() 方法,并将 (listener()) 传递给方法的 listener 参数,并记录正在监听名为“event”的事件的监听器的数量。

const EventEmitter = require('node:events');
const myEvent = new EventEmitter();

function one(){
  console('January');
};

myEvent.on('event', one);

console.log(myEvent.listenerCount('event'));

输出

上述程序产生以下输出:

1

示例 2

我们创建了多个函数 one()、two()、three() 和 four()。然后,我们多次使用相同的 eventName (event) 作为第一个参数调用 emitter.on() 方法,并将之前创建的监听器函数传递给方法的 listener 参数。然后,我们将事件作为参数传递给 myEvent.listenerCount() 方法。当我们编译并运行程序时,myEvent.listenerCount() 方法将返回名为 event 的事件的监听器数量。

const EventEmitter = require('node:events');
const myEvent = new EventEmitter();

function one(){
  console('January');
};

function two(){
  console('February');
}

function three(){
  console('March');
}

myEvent.on('event', one);
myEvent.on('event', two);
myEvent.on('event', three);

console.log(myEvent.listenerCount('event'));

输出

上述程序产生以下输出:

3

示例 3

我们将一个监听器函数传递给 event,三个监听器函数传递给 event1。因此,我们使用 event 和 event1 调用 myEmitter.listenerCount()。当我们编译并运行程序时,myEvent.listenerCount('event') 将返回计数为 1,而 myEvent.listenerCount('event1') 将返回计数为 2。

const EventEmitter = require('node:events');
const myEvent = new EventEmitter();

function one(){
  console('January');
};

function two(){
  console('February');
}

function three(){
  console('March');
}

myEvent.on('event', one);
myEvent.on('event1', two);
myEvent.on('event1', three);

console.log(myEvent.listenerCount('event'));
console.log(myEvent.listenerCount('event1'));

输出

上述程序产生以下输出:

1
2
nodejs_events.htm
广告
© . All rights reserved.