• 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
廣告