• Node.js Video Tutorials

NodeJS - emitter.once() 方法


emitter.once() 方法用于为名为 eventName 的事件添加一次性监听器函数。无法检查监听器是否已添加到监听器数组中。

如果多次调用 emitter.once() 方法并传递相同的 eventName 和 listener 组合,则监听器函数将被添加到 listeners 数组中,并且将被调用其添加的次数。

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

语法

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

eventEmitter.once(event, listener)

参数

此方法接受以下两个参数:

  • EventName: 表示事件名称的字符串或符号。
  • Listener: 当事件第一次发出时调用。监听器函数可以接受在发出事件时传递的参数。

返回值

此方法返回特定事件的事件监听器。当发出指定的事件时,将执行提供的回调函数。

示例 1

以下是 NodeJs eventemitter.once(event, listener) 方法的基本示例。

首先,我们导入了 node:events 模块。我们创建了一个带有消息的监听器函数 one()。然后,我们通过将 eventName (event) 传递给第一个参数并将函数 one() 传递给第二个参数来调用 myEmitter.once() 方法。如果我们编译并运行程序,myEmitter.once() 方法将返回存储在 listener 数组中的监听器 (函数 one())。

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

const myEmitter = new EventEmitter();

function one(){
    console.log('First user login successful...');
}

myEmitter.once('event', one);
myEmitter.emit('event');

输出

以上程序产生以下输出:

First user login successful...

示例 2

在本例中,我们创建了三个函数并将它们传递给 myEmitter.once() 方法的监听器函数参数。因此,myEmitter.on() 方法将监听器函数添加到名为 event 的事件的 listener 数组的末尾。因此,当我们编译并运行程序时,它将首先打印 one()、two(),然后打印 three()。

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

const myEmitter = new EventEmitter();

function one(){
    console.log('First user login successful');
}

function two(){
    console.log('Second user login successful');
}

function three(){
    console.log('Third user login successful');
}

myEmitter.once('event', one);
myEmitter.once('event', two);
myEmitter.once('event', three);

myEmitter.emit('event');

输出

以上程序产生以下输出:

First user login successful
Second user login successful
Third user login successful

示例 3

注意: 默认情况下,事件监听器按添加顺序调用。

在下面的示例中,我们使用了 emitter.prependOnceListener() 方法,并使用了与之前传递给 myEmitter.once() 方法相同的 eventName。然后,我们将函数 four() 传递给 emitter.prependOnceListener() 方法。因此,这会将函数添加到 listeners 数组的开头。因此,当我们编译并运行程序时,传递到 emitter.prependOnceListener() 方法中的函数将首先打印,然后是其余的函数。

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

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

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

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

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

myEmitter.once("myEvent", one);
myEmitter.once("myEvent", two);
myEmitter.once("myEvent", three);
myEmitter.prependOnceListener("myEvent", four);

myEmitter.emit("myEvent");

输出

以上程序产生以下输出:

Fucn4 is added
Func1 is added
Fucn2 is added
Fucn3 is added
nodejs_events.htm
广告

© . All rights reserved.