• Node.js Video Tutorials

NodeJs - emitter.prependOnceListener() 方法


当我们使用emitter.once()emitter.on() 方法添加监听器函数时,它将被添加到监听器数组的末尾,并且最后被调用。通过调用emitter.prependOnceListener() 方法,它会在其他监听器之前添加并调用。

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

语法

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

emitter.prependOnceListener(eventName, listener)

参数

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

  • eventName:这是方法的第一个参数,它保存事件的名称。它可以是字符串或符号。
  • listener:此参数保存回调函数。

返回值

此方法返回对 EventEmitter 的引用,以便可以链接调用

示例 1

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

在这里,我们创建了四个函数 f1、f2、f3 和 f4,并在其中包含一条消息。然后我们使用 myEmitter.on() 方法调用了 f1、f2 和 f3。它将根据调用的顺序添加监听器函数。稍后,我们使用 emitter.prependOnceListener() 方法调用了监听器函数 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.prependOnceListener("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.prependOnceListener() 方法调用任何函数。因此,当我们编译并运行程序时,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.prependOnceListener() 将为 eventName “anEvent” 添加一个一次性监听器到监听器数组的开头。当我们编译并运行程序时,它将把监听器函数添加到监听器数组的开头。

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

myEmitter.prependOnceListener("anEvent", (f1) => {
  console.log('Aye, nice to meet you');
});

myEmitter.prependOnceListener("anEvent", (f1) => {
  console.log('Aye, Hello');
});


myEmitter.emit("anEvent");

输出

以上程序产生以下输出:

Aye, Hello
Aye, nice to meet you
nodejs_events.htm
广告

© . All rights reserved.