亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

所有事件都有一個監聽器數組還是所有“發射器”都有一個監聽器數組?

所有事件都有一個監聽器數組還是所有“發射器”都有一個監聽器數組?

動漫人物 2022-10-27 15:38:38
我正在查看節點文檔并嘗試了解此功能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)。它是對象的形式,其中所有事件名稱都是鍵,值是附加到事件的所有函數的數組。它在這里是一個數組這一事實很重要,因為函數將按照它們被添加的順序被同步調用。


查看完整回答
反對 回復 2022-10-27
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

發射器(在這種情況下是服務器)跟蹤所有附加的事件偵聽器,沒有全局事件偵聽器數組。



查看完整回答
反對 回復 2022-10-27
  • 2 回答
  • 0 關注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號