• 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
广告
© . All rights reserved.