nodejs Events 學習筆記

EventEmitter 類

const EventEmitter = require('events');
'newListener' 事件
    當新增監聽器時,在新的監聽器被添加到其內部監聽器數組以前觸發
'removeListener' 事件
    當移除已存在的監聽器時觸發

事件上監聽器的數量

  • 最大限制數量數組

    當前的監聽器最大限制數的默認值:EventEmitter.defaultMaxListeners()
       獲取EventEmitter當前的監聽器最大限制數的值:emitter.getMaxListeners()
       設置EventEmitter當前的監聽器最大限制數的值:emitter.setMaxListeners(n)
  • 當前數量異步

    返回正在監聽的名爲 eventName 的事件的監聽器的數量: emitter.listenerCount(eventName)
       廢棄:EventEmitter.listenerCount(emitter, eventName)

在事件上添加/刪除監聽器

  • 添加函數

    監聽器會在每次觸發命名事件時被調用
           添加 listener 函數到名爲 eventName 的事件的監聽器數組的末尾
               emitter.on(eventName, listener)
                   別名:emitter.addListener(eventName, listener)
           添加 listener 函數到名爲 eventName 的事件的監聽器數組的開頭
               emitter.prependListener(eventName, listener)
       監聽器只在第一次觸發命名事件時被調用一次
           添加單次監聽器 listener 到名爲 eventName 的事件的監聽器數組的末尾
               emitter.once(eventName, listener)
           添加單次監聽器 listener 到名爲 eventName 的事件的監聽器數組的開頭
               emitter.prependOnceListener(eventName, listener)
  • 刪除ui

    從名爲 eventName 的事件的監聽器數組中移除指定的 listener
           emitter.removeListener(eventName, listener)
               別名:emitter.off(eventName, listener)
       移除所有監聽器或指定的 eventName 事件的監聽器
           emitter.removeAllListeners([eventName])

觸發事件

emitter.emit(eventName[, ...args])
    1. 按照監聽器註冊的順序,同步地(順序的依次)調用每一個註冊到名爲 eventName 的事件的監聽器,並傳入提供的參數。能夠使用 setImmediate() 或 process.nextTick() 切換到異步模式。
    2. 在事件觸發以後、且最後一個監聽器執行完成以前, removeListener() 或 removeAllListeners() 不會從 emit() 中移除綁定的監聽器
    3. 若是事件有監聽器,則返回 true,不然返回 false

獲取已註冊監聽器的事件名數組

emitter.eventNames()
    數組中的值爲字符串或 Symbol

獲取事件監聽器數組

獲取事件監聽器數組的副本
    emitter.listeners(eventName)
獲取事件監聽器數組的拷貝,包括封裝的監聽器(例如由 .once() 建立的)
    emitter.rawListeners(eventName)
相關文章
相關標籤/搜索