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)
相关文章
相关标签/搜索