1.0.0 • Published 3 years ago

ee-bus v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

ee-bus

npm package

Node's event emitter for all engines.

NPM version NPM Downloads npm.io

Installation

npm i ee-bus --save

Usage

import Emitter from 'ee-bus'

const emitter = new Emitter() // const emitter = Emitter.create()

// listen to an event
emitter.on('foo', e => console.log('foo', e) )
emitter.once('foo', e => console.log('foo', e) )

// listen to all events
function attachment() { console.log(type, e) }
emitter.attach(attachment)

// unlisten to all events
emitter.detach(attachment);

// fire an event
emitter.emit('foo', { a: 'b' })

// clearing all events
emitter.off('foo', '*')
emitter.removeAllListeners('foo')
emitter.off('*')
emitter.removeAllListeners()

// working with handler references:
function onFoo() {}
emitter.on('foo', onFoo)   // listen
emitter.off('foo', onFoo)  // unlisten

Options

new Emitter(opts?: object)

  • opts
    • event (boolean):事件监听函数的第一个参数是否是 Event 对象

Class:Emitter

addListener

on 方法的别名

attach

附加一个全局回调,触发任意事件都会执行该回调

Since

  • 1.0.0

Arguments

  • fn (function):回调函数
  • once:是否只执行一次

Returns

  • (this):返回当前对象

detach

移除一个全局回调,触发任意事件都会执行该回调

Since

  • 1.0.0

Arguments

  • fn (function):attach 方法传入的回调函数

Returns

  • (this):返回当前对象

emit

移除所有事件

Since

  • 1.0.0

Arguments

  • eventName ('*' | string):触发指定事件,'*' 表示触发所有事件
  • ...args:透传到事件监听函数中的数据,不限个数,不限类型

Returns

  • (boolean):是否触发过事件

off

移除自定义事件

Since

  • 1.0.0

Arguments

  • eventName ('*' | string | string[] | object):数组和对象表示一次移除多个事件,'*' 表示移除所有事件
  • fn ('*' | function):触发事件后的监听函数,'*' 表示移除所有跟 eventName 相关事件

Returns

  • (this):返回当前对象

on

绑定自定义事件

Since

  • 1.0.0

Arguments

  • eventName (string | string[] | object):数组和对象表示一次绑定多个事件
  • fn (function):触发事件后的监听函数
  • once:是否只执行一次

Returns

  • (this):返回当前对象

once

on 方法类似,但只触发一次事件回调

Since

  • 1.0.0

Arguments

  • eventName (string | string[] | object):数组和对象表示一次绑定多个事件
  • fn (function):触发事件后的监听函数

Returns

  • (this):返回当前对象

removeAllListeners

移除所有事件

Since

  • 1.0.0

Arguments

  • eventName:如果不为空,将移除所有跟 eventName 相关事件;如果为空,将移除所有事件

Returns

  • (this):返回当前对象

removeListener

off 方法的别名

trigger

emit 方法的别名

Class:Emitter.Event

class Event {
  constructor(
    type: string, 
    target: Emitter, 
    currentTarget: Emitter
  )

  stopImmediatePropagation(): void
}

stopImmediatePropagation

阻止监听同一事件的其它事件监听函数被调用

Since

  • 1.0.0

Example

import Emitter from '@ali/iot-cloud-emitter'

const emitter = new Emitter()
emitter.on('click', (evt) => {
  console.log('我是第一个监听函数');
})
emitter.on('click', (evt) => {
  console.log('我是第二个监听函数');
  // 执行stopImmediatePropagation方法
  evt.stopImmediatePropagation();
})
emitter.on('click', (evt) => {
  // 该监听函数排在上个函数后面,不会被执行
  console.log('我是第三个监听函数');
})
emitter.emit('click')