• Node.js Video Tutorials

NodeJS - emitter.prependListener() 方法


此方法將把作為監聽器函式傳遞的函式新增到名為 eventName 的事件的監聽器陣列的開頭。無法檢查監聽器是否已新增到監聽器陣列。

如果多次呼叫 `emitter.prependListener()` 方法並傳入 eventName 和 listener 的相同組合,則監聽器函式將被新增到監聽器陣列的開頭,並將被多次呼叫。

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

語法

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

emitter.prependListener(eventName, listener)

引數

此方法接受兩個引數,如下所述。

  • **eventName**: (必需) 這是方法的第一個引數,它儲存事件的名稱。可以是字串或符號。
  • **listener**: (必需) 此引數儲存回撥函式。

返回值

此方法返回 EventEmitter 的引用,以便可以連結呼叫。

示例 1

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

在這裡,我們建立了四個函式 f1、f2、f3 和 f4,其中包含一條訊息。然後,我們使用 myEmitter.on() 方法呼叫了 f1、f2 和 f3。它將根據呼叫的順序新增監聽器函式。稍後,我們使用 emitter.prependListener() 方法呼叫了監聽器函式 f4。因此,f4 將被新增到監聽器陣列的開頭。如果我們編譯並執行程式,f4 將首先返回,然後是其餘的。

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

function f1(){
  console.log("Func1 is added");
}

function f2(){
  console.log("Fucn2 is added");
}

function f3(){
  console.log("Fucn3 is added");
}

function f4(){
  console.log("Fucn4 is added");
}

myEmitter.on("myEvent", f1);
myEmitter.on("myEvent", f2);
myEmitter.on("myEvent", f3);
myEmitter.prependListener("myEvent", f4);

myEmitter.emit("myEvent");

輸出

上述程式產生以下輸出:

Fucn4 is added
Func1 is added
Fucn2 is added
Fucn3 is added

示例 2

在這個程式中,我們建立了四個函式 f1、f2、f3 和 f4,其中包含一條訊息。然後,我們使用 myEmitter.on() 方法呼叫了所有四個函式,並且我們沒有使用 emitter.prependListener() 方法呼叫任何函式。因此,當我們編譯並執行程式時,myEmitter.on() 方法將根據呼叫的順序返回監聽器函式。

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

function f1(){
  console.log("Func1 is added");
}

function f2(){
  console.log("Fucn2 is added");
}

function f3(){
  console.log("Fucn3 is added");
}

function f4(){
  console.log("Fucn4 is added");
}

myEmitter.on("myEvent", f1);
myEmitter.on("myEvent", f2);
myEmitter.on("myEvent", f3);
myEmitter.on("myEvent", f4);

myEmitter.emit("myEvent");

輸出

上述程式產生以下輸出:

Func1 is added
Fucn2 is added
Fucn3 is added
Fucn4 is added

示例 3

在這個程式中,我們使用 emitter.prependListener() 方法呼叫了 eventName 和 listener 的相同組合。因此,emitter.prependListener() 方法會將監聽器新增到監聽器陣列的開頭,並且會多次呼叫。當我們編譯並執行程式時,f2 函式將被多次呼叫。

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

function f1(){
  console.log("Func1 is added");
}

function f2(){
  console.log("Fucn2 is added");
}

myEmitter.on("myEvent", f1);
myEmitter.prependListener("myEvent", f2);
myEmitter.prependListener("myEvent", f2);
myEmitter.prependListener("myEvent", f2);

myEmitter.emit("myEvent");

輸出

上述程式產生以下輸出:

Fucn2 is added
Fucn2 is added
Fucn2 is added
Func1 is added
nodejs_events.htm
廣告