Eventemitter3 (事件发射器)

EventEmitter3是一个高性能的EventEmitter。它已经针对各种代码路径进行了微优化,这使得它成为Node.js和浏览器中最快的EventEscape之一。该模块是API兼容的EventEscape,默认情况下与Node.js一起提供,但有一些细微的差异:

  • 域支持已被删除。
  • 当你 throw 一个错误事件而没有人在监听时,我们不会抛出错误。
  • newListenerremoveListener 事件已被删除,因为它们仅在某些不常见的用例中有用。
  • setMaxListenersgetMaxListenersprependListenersprependOnceListeners方法不可用。
  • 支持自定义事件上下文,因此无需使用 fn.bind
  • removeHandler 方法删除所有匹配的监听器,而不仅仅是第一个监听器。

它是现有 EventEmitter 的替代品的下降,但速度更快。免费表演,谁不想要呢?EventExec 是用 EcmaScript 3编写的,因此它将在您需要支持的最旧浏览器和节点版本中工作。

Tip

如果你用过 uniappuni.$emituni.$on 一定可以快速上手的。

Npm Packageopen in new window

安装

npm install --save eventemitter3

CDN

https://unpkg.com/eventemitter3@latest/dist/eventemitter3.umd.min.js

使用

  1. 创建总线

eventBus.js

import EventEmitter from 'eventemitter3';

const eventBus = new EventEmitter();

export default eventBus;
  1. 订阅
// 持续订阅
eventBus.on('place-order', (data) => {  });
// 只订阅一次
eventBus.once('place-order', (data) => {  })
// 取消订阅
eventBus.off('place-order')
eventBus.removeListener('place-order')
  1. 触发事件
// 触发事件
const payload = { name: '张三' }
eventBus.emit("place-order", payload);
Last Updated:
Contributors: 余小波