所有事件都有一个监听器数组还是所有“发射器”都有一个监听器数组?

我正在查看节点文档并尝试了解此功能


server.on('connection', (stream) => {

  console.log('someone connected!');

});


emitter.on(eventName, listener)

我感到困惑的部分是这个;具体部分加粗。"将侦听器函数添加到名为 eventName 的事件的侦听器数组的末尾。"


for 是否意味着所有发射器(在本例中是服务器)都有一个侦听器数组,并且该数组中的一些函数是“用于”(指定给)某些事件的。或者,这是否意味着所有事件都有一个侦听器数组,并且它只会将此函数(流)添加到“连接”事件中。


如果是后者,那么 eventlistenerarray[lastindex aka (stream)] 如何知道它仅在事件发生在 emmiter... 服务器上时才运行在这种情况下


动漫人物
浏览 64回答 2
2回答

扬帆大鱼

_每个你附加事件的对象来存储它们自己的事件(独立于其他对象)_每个事件名称都有自己的(有序)函数数组(独立于同一对象中的其他事件)细节:您在有关事件的节点文档的这一部分中有一个很好的例子来说明它的结构和存储方式const myEmitter = new MyEmitter();myEmitter.on('myEvent', function(a, b) {  console.log(a, b, this, this === myEmitter);  // Prints:  //   a b MyEmitter {  //     domain: null,  //     _events: { myEvent: [Function] },  //     _eventsCount: 1,  //     _maxListeners: undefined } true});myEmitter.emit('myEvent', 'a', 'b');您可以看到,当this(事件附加到的对象)被记录时,事件处理程序存储在对象本身内部(在属性中_events)。它是对象的形式,其中所有事件名称都是键,值是附加到事件的所有函数的数组。它在这里是一个数组这一事实很重要,因为函数将按照它们被添加的顺序被同步调用。

肥皂起泡泡

发射器(在这种情况下是服务器)跟踪所有附加的事件侦听器,没有全局事件侦听器数组。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript