Eventemitter3 (事件发射器)
EventEmitter3是一个高性能的EventEmitter。它已经针对各种代码路径进行了微优化,这使得它成为Node.js和浏览器中最快的EventEscape之一。该模块是API兼容的EventEscape,默认情况下与Node.js一起提供,但有一些细微的差异:
- 域支持已被删除。
- 当你
throw
一个错误事件而没有人在监听时,我们不会抛出错误。 newListener
和removeListener
事件已被删除,因为它们仅在某些不常见的用例中有用。setMaxListeners
、getMaxListeners
、prependListeners
和prependOnceListeners
方法不可用。- 支持自定义事件上下文,因此无需使用
fn.bind
。 removeHandler
方法删除所有匹配的监听器,而不仅仅是第一个监听器。
它是现有 EventEmitter 的替代品的下降,但速度更快。免费表演,谁不想要呢?EventExec 是用 EcmaScript 3编写的,因此它将在您需要支持的最旧浏览器和节点版本中工作。
Tip
如果你用过 uniapp
的 uni.$emit
和 uni.$on
一定可以快速上手的。
安装
npm install --save eventemitter3
CDN
https:/eventemitter3@latest/dist/eventemitter3.umd.min.js
使用
- 创建总线
eventBus.js
import EventEmitter from 'eventemitter3';
const eventBus = new EventEmitter();
export default eventBus;
- 订阅
// 持续订阅
eventBus.on('place-order', (data) => { });
// 只订阅一次
eventBus.once('place-order', (data) => { })
// 取消订阅
eventBus.off('place-order')
eventBus.removeListener('place-order')
- 触发事件
// 触发事件
const payload = { name: '张三' }
eventBus.emit("place-order", payload);