• Node.js Video Tutorials

NodeJs - emitter.removeListener() 方法


emitter.removeListener() 方法用于从名为 eventName 的事件的监听器数组中移除指定的监听器函数。

此方法将从监听器数组中移除最近添加的监听器函数实例。如果一个监听器被多次添加到名为 eventName 的事件的监听器数组中,则需要多次调用 removeListener() 方法才能从监听器数组中移除每个实例。

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

语法

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

emitter.removeListener(eventName, listener)

参数

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

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

返回值

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

现在让我们进入在不同场景下使用 Node.js 的 emitter.removeListener() 方法的示例。

示例 1

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

我们创建了一个包含消息的函数 f1()。然后,我们使用作为第一个参数传递的 eventName (event) 调用 emitter.addListener() 方法,并将 (f1) 传递给方法的 listener 函数参数。因此,该函数被添加到监听器数组中。然后,我们使用 eventName (event) 和 f1() 函数调用 myEmitter.removeListener() 方法。因此,当我们编译并运行程序时,myEmitter.removeListener() 方法将移除名为“event”的事件的监听器函数 f1()。

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

const myEmitter = new EventEmitter();

function f1(){
    console.log('I\'m from function1');
}

myEmitter.addListener('event', f1);

myEmitter.removeListener('event', f1);

myEmitter.emit('event');

输出

上述程序产生以下输出:

Program did not output anything!

示例 2

在此程序中,我们将相同的 eventName 和 listener 函数组合传递给 myEmitter.addListener() 方法。这将导致监听器函数被添加到监听器数组并被多次调用。

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

const myEmitter = new EventEmitter();

function f1(){
    console.log('I\'m from function1');
}

myEmitter.addListener('event1', f1);
myEmitter.addListener('event2', f1);
myEmitter.addListener('event3', f1);
myEmitter.addListener('event4', f1);

myEmitter.removeListener('event1', f1);
myEmitter.removeListener('event2', f1);

myEmitter.emit('event3');
myEmitter.emit('event4');

输出

上述程序产生以下输出:

I'm from function1
I'm from function1

示例 3

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

我们为单个事件 (event) 多次添加了单个监听器函数 (f1)。然后,我们使用名为“event”的事件和监听器 f1() 调用 myEmitter.removeListener()。

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

const myEmitter = new EventEmitter();

function f1(){
    console.log('Hi');
}

myEmitter.addListener('event', f1);
myEmitter.on('event', f1);
myEmitter.once('event', f1);

myEmitter.removeListener('event', f1);

myEmitter.emit('event');

输出

上述程序产生以下输出:

Hi   
Hi
nodejs_events.htm
广告
© . All rights reserved.