gpt4 book ai didi

javascript - EventEmitter() 的 "Static methods"

转载 作者:行者123 更新时间:2023-11-30 15:37:27 25 4
gpt4 key购买 nike

我是Nodejs新手,对EventEmitterlistenerCount()方法有疑问,还有一般调用静态方法的方式。这是 TutorialsPoint 的事件发射器 Nodejs 教程中的示例代码:

var events = require('events');
var eventEmitter = new events.EventEmitter();

// listener #1
var listner1 = function listner1() {
console.log('listner1 executed.');
}

// listener #2
var listner2 = function listner2() {
console.log('listner2 executed.');
}

// Bind the connection event with the listner1 function
eventEmitter.addListener('connection', listner1);

// Bind the connection event with the listner2 function
eventEmitter.on('connection', listner2);

var eventListeners = require('events').EventEmitter.listenerCount
(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

// Fire the connection event
eventEmitter.emit('connection');

// Remove the binding of listner1 function
eventEmitter.removeListener('connection', listner1);
console.log("Listner1 will not listen now.");

// Fire the connection event
eventEmitter.emit('connection');

eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

console.log("Program Ended.");

它通过再次请求事件调用 events“类”(它是一个类吗?)的 listenerCount() 方法。我指的是它所说的部分:

var eventListeners = require('events').EventEmitter.listenerCount
(eventEmitter,'连接')

listenerCount() 本质上是一个静态方法,我想,因为您不能直接在 events 对象上调用它。

(我也不太明白为什么实现是这样的,为什么不实现它以便我可以在我的 eventEmitter 对象上调用它,例如:eventEmitter .listenerCount('连接'))

但无论哪种方式,我随后尝试的是在我的 events 对象上调用此静态方法,而无需额外的 require 调用(在此代码中的两个实例上), 所以它看起来像这样:

events.EventEmitter.listenerCount(eventEmitter, "connection");

程序的输出是一样的。

所以我的问题是,作者通过为每个调用创建一个新的 require 来调用它是否有实际原因,并且是否存在(或可能存在)任何差异原始代码中调用方式的行为,以及我的更改?

最佳答案

FWIW 您可以实际使用 emitter.listenerCount() 至少从 Node v4.0.0 开始。

至于额外的 require(),它不是必需的,您可以按照您的建议进行操作 (events.EventEmitter.listenerCount())。

关于javascript - EventEmitter() 的 "Static methods",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com