• Node.js Video Tutorials

NodeJS - emitter.emit() 方法


emitter.emit() 方法會同步呼叫註冊到名為 eventName 的事件的所有監聽器,並按註冊順序依次呼叫,同時將引數傳遞給每個監聽器函式。

此方法屬於 Eventemitter 類,它是 node:events 模組的內建類。

語法

以下是 NodeJs emitter.emit() 方法的語法:

emitter.emit(eventName[, …args])

引數

此方法接受以下兩個引數:

  • eventName:這是方法的第一個引數,它儲存事件的名稱。它可以是字串或符號。
  • args:(可選) 此引數儲存一組可以傳遞給監聽器函式的引數。

返回值

(布林值) 如果事件有監聽器,則此方法返回 true;如果事件沒有監聽器,則返回 false。

示例 1

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

在這裡,我們將 args 傳遞給了 myEmitter.emit() 方法。args 將傳遞給監聽器函式,然後列印完整的訊息。

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

function f1(arg1, arg2){
  console.log(`${arg1} to ${arg2}`);
}

myEmitter.on('myEvent', f1);

myEmitter.emit("myEvent", 'Welcome', 'Tutorialspoint', 'Bye');

輸出

以上程式產生以下輸出:

Welcome to Tutorialspoint

示例 2

首先,我們建立了一個包含訊息的函式 func1。然後,我們呼叫了 emitter.addListener() 方法,將 eventName 作為第一個引數傳遞,並將 (func1) 傳遞給方法的 listener 引數,透過呼叫 myEmitter.emit() 方法並傳入 eventName。由於我們在這裡沒有傳遞任何 args。由於 eventName 有一個監聽器,因此 myEmitter.emit() 方法將返回監聽器函式。

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

function f1() {
  console.log("Heya!, i'm function1");
}

myEmitter.addListener("myEvent", f1)

myEmitter.emit("myEvent"); 

輸出

以上程式產生以下輸出:

Heya!, i'm function1

示例 3

在這個程式中,我們使用了擴充套件運算子 (…) 來提取我們傳遞的每個 args。因此,所有 args 都將被提取並傳遞給監聽器函式。

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

function f1(...args){
  const teams = args.join(', ');
  console.log(`Some International cricket teams are ${teams}.`);
}

myEmitter.on('myEvent', f1);

myEmitter.emit("myEvent", 'India', 'Pakistan', 'Australia', 'England');

輸出

以上程式產生以下輸出:

Some International cricket teams are India, Pakistan, Australia, England.
nodejs_events.htm
廣告