• Node.js Video Tutorials

NodeJS - emitter.off() 方法


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

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

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

语法

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

emitter.off(eventName, listener)

参数

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

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

返回值

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

示例 1

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

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

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

function one(){
  console('Welcome to Earth');
};

myEvent.on('event', one);

console.log(myEvent.eventNames());

输出

以上程序产生以下输出:

Program did not output anything!

示例 2

以下是将 eventName 和 listener 函数的类似组合传递给 myEmitter.on() 方法的程序。这将导致监听器函数被添加到监听器数组中并多次调用。因此,函数 f1() 被四次添加到监听器数组中。然后,我们两次使用与在 myEmitter.on() 方法中传递的 eventName 和 listener 函数相同的组合调用了 myEmitter.off() 方法。因此,只有两个监听器函数 f1() 实例将被移除。

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

const myEmitter = new EventEmitter();

function f1(){
    console.log('Welcome to tutorialspoint');
}

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

myEmitter.off('event', f1);
myEmitter.off('event', f1);

myEmitter.emit('event'); 

输出

以上程序产生以下输出:

Welcome to tutorialspoint
Welcome to tutorialspoint

示例 3

在此程序中,我们为单个事件 (event) 多次添加了单个监听器函数 (f1)。然后,我们使用名为“event”的事件和监听器 f1() 调用了 myEmitter.off() 方法。如果我们编译并运行程序,off() 方法将移除最近添加的实例。在这里,将移除 myEmitter.on('event')。

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

const myEmitter = new EventEmitter();

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

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

myEmitter.off('event', f1);

myEmitter.emit('event');

输出

以上程序产生以下输出:

Bye
Bye
nodejs_events.htm
广告

© . All rights reserved.