• Node.js Video Tutorials

NodeJS - emitter.getMaxListeners() 方法


emitter.getMaxListeners() 方法将帮助我们返回 eventEmitter 的当前最大监听器限制值,该值由 emitter.setMaxListeners(n) 设置。

此方法除了返回 eventEmitter 的最大监听器限制之外,不会执行任何其他操作。

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

语法

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

emitter.getMaxListners()

参数

  • 此方法不接受任何参数。

返回值

此方法将返回侦听名为 eventName 的事件的监听器函数的数量。

示例 1

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

最初,我们导入了 node:events 模块。然后,我们将单个监听器函数 ‘f1()’ 与 eventName ‘myEvent’ 一起传递给 emitter.addListener() 方法。然后,我们通过将 ‘myEvent’ 作为参数调用了 emitter.getMaxListeners() 方法。它返回 ‘10’,因为“默认情况下,EventEmitters 对于特定事件仅接受 10 个监听器”。

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

function f1(){
};

myEmitter.addListener('myEvent', f1);

console.log(myEmitter.getMaxListeners());

输出

以上程序产生以下输出:

10

示例 2

在此程序中,我们再次将单个监听器函数 ‘f1()’ 与 eventName ‘myEvent’ 一起传递给 emitter.addListener() 方法。然后,我们通过将默认限制修改为 1 来调用 emitter.setMaxListeners() 方法。

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

function f1(){
};

myEmitter.setMaxListeners(1);
myEmitter.addListener('myEvent', f1);

console.log(myEmitter.getMaxListeners());

输出

以上程序产生以下输出:

1

示例 3

在此程序中,我们将监听器限制设置为 ‘1’ 到特定事件 ‘myEvent’,并且我们向名为 ‘myEvent’ 的同一事件添加了 4 个监听器。因此,EventEmitter 将抛出一个警告消息,即“检测到内存泄漏”。

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

function f1(){
};
function f2(){
};
function f3(){
};
function f4(){
};

myEmitter.setMaxListeners(1);
myEmitter.addListener('myEvent', f1);
myEmitter.addListener('myEvent', f2);
myEmitter.addListener('myEvent', f3);
myEmitter.addListener('myEvent', f4);

console.log(myEmitter.getMaxListeners());

输出

以上程序产生以下输出:

1

(node:33292) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 2 myEvent listeners added to [EventEmitter]. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
nodejs_events.htm
广告

© . All rights reserved.