我正在查看节点文档并尝试了解此功能server.on('connection', (stream) => { console.log('someone connected!');});emitter.on(eventName, listener)我感到困惑的部分是这个;具体部分加粗。"将侦听器函数添加到名为 eventName 的事件的侦听器数组的末尾。"for 是否意味着所有发射器(在本例中是服务器)都有一个侦听器数组,并且该数组中的一些函数是“用于”(指定给)某些事件的。或者,这是否意味着所有事件都有一个侦听器数组,并且它只会将此函数(流)添加到“连接”事件中。如果是后者,那么 eventlistenerarray[lastindex aka (stream)] 如何知道它仅在事件发生在 emmiter... 服务器上时才运行在这种情况下
2 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
_每个你附加事件的对象来存储它们自己的事件(独立于其他对象)
_每个事件名称都有自己的(有序)函数数组(独立于同一对象中的其他事件)
细节:
您在有关事件的节点文档的这一部分中有一个很好的例子来说明它的结构和存储方式
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)。它是对象的形式,其中所有事件名称都是键,值是附加到事件的所有函数的数组。它在这里是一个数组这一事实很重要,因为函数将按照它们被添加的顺序被同步调用。
添加回答
举报
0/150
提交
取消