@yingzhixiaoyi/event-bus
v0.0.1
Published
Typed in-process event bus with explicit lifecycle management
Readme
@yingzhixiaoyi/event-bus
面向单个 JavaScript 运行时的类型安全事件总线,提供默认单例和可选工厂。
能力边界
负责同步的 on、emit、off、once、clear 和监听数量查询。ev_bus 是当前 JavaScript runtime 内的默认共享实例;createEventBus() 创建隔离实例。
本包不负责跨窗口、跨 iframe、Wujie 主子应用通信、异步队列、状态持久化、Vue 生命周期或错误上报。跨 Wujie 通信请使用 @yingzhixiaoyi/wujie-bus。
使用
import { createEventBus } from '@yingzhixiaoyi/event-bus'
type Events = {
saved: (id: string) => void
closed: () => void
}
const l_ev_bus = createEventBus<Events>()
const stop = l_ev_bus.on('saved', id => console.log(id))
l_ev_bus.emit('saved', 'record-1')
stop()业务模块默认使用共享实例:
import { ev_bus } from '@yingzhixiaoyi/event-bus'
const stop = ev_bus.on('auth:user-changed', user => console.log(user))
ev_bus.emit('auth:user-changed', { id: 'safe-value' })
stop()emit 是同步调用;监听器异常会同步抛出。once 会在回调执行前注销,避免回调抛错后继续残留。推荐保存 on / once 返回的 disposer,在模块或组件销毁时调用。
本包的 ev_bus 不负责 Wujie 主子应用通信;后者统一使用 wujie_bus / @yingzhixiaoyi/wujie-bus。
