Skip to content

events

[TOC]

索引

EventEmitter

events

EventEmitter

on()@【

emitter.on()()监听事件,也可以使用 addListener()。

  • :``,

  • :``,

  • :``,

  • 返回:

  • :``,

off()@【

emitter.off()()移除事件监听,也可以使用 removeListener()。

  • :``,

  • :``,

  • :``,

  • 返回:

  • :``,

emit()@【

emitter.emit()()发射事件,可以携带一些参数。

  • :``,

  • :``,

  • :``,

  • 返回:

  • :``,

eventNames()【

emitter.eventNames()(),返回当前 emitter 对象注册的事件名数组

  • :``,

  • :``,

  • :``,

  • 返回:

  • :``,

getMaxListeners()【

emitter.getMaxListeners()()默认:10,返回当前 emitter 对象的最大监听器数量,可以通过setMaxListeners()来修改。

  • :``,

  • :``,

  • :``,

  • 返回:

  • :``,

setMaxListeners()【

emitter.setMaxListeners()()

  • :``,

  • :``,

  • :``,

  • 返回:

  • :``,

示例

  1. ****:

    js
  2. ****:

    js
  3. ****:

    js

核心特性

  1. ****:

    js
  2. ****:

    js
  3. ****:

    js

注意事项

  1. ****:

    js
  2. ****:

    js
  3. ****:

    js

listenerCount()【

emitter.listenerCount()(eventName),返回当前 emitter 对象某一个事件的监听器的个数

  • :``,

  • :``,

  • :``,

  • 返回:

  • :``,

listeners()【

emitter.listeners()(eventName),返回当前 emitter 对象某个事件监听器上所有的监听器数组

  • :``,

  • :``,

  • :``,

  • 返回:

  • :``,

once()

emitter.once()(eventName, listener)只监听一次发射的事件。

js
const EventEmitter = require('events')

const emitter = new EventEmitter()

// 只监听第一次发射的事件
emitter.once('click', (args) => {
  console.log('监听到事件', args)
})

setTimeout(() => {
  // 发射了2次事件
  emitter.emit('click', 'coderwhy')
  emitter.emit('click', 'coderwhy')
}, 2000)

prependListener()

emitter.prependListener()(),将监听事件添加到最前面

js
emitter.on('click', (args) => {
  console.log('a监听到事件', args)
})

// b监听事件会被放到前面
emitter.prependListener('click', (args) => {
  console.log('b监听到事件', args)
})

prependOnceListener()

emitter.prependOnceListener()(),将监听事件添加到最前面,但是只监听一次

js
emitter.prependOnceListener('click', (args) => {
  console.log('c监听到事件', args)
})

removeAllListeners()

emitter.removeAllListeners()(eventName?)移除所有的监听器。

js
// 移除emitter上的所有事件监听
emitter.removeAllListeners()

// 移除emitter上的click事件监听
emitter.removeAllListeners('click')