Files
2026-07-11 17:15:17 +08:00

31 lines
658 B
JavaScript

// 极简事件总线(避免引入额外依赖)
const listeners = new Map()
export function on(event, handler) {
if (!event || typeof handler !== 'function') return
const set = listeners.get(event) || new Set()
set.add(handler)
listeners.set(event, set)
}
export function off(event, handler) {
const set = listeners.get(event)
if (!set) return
set.delete(handler)
if (set.size === 0) listeners.delete(event)
}
export function emit(event, payload) {
const set = listeners.get(event)
if (!set || set.size === 0) return
for (const fn of Array.from(set)) {
try {
fn(payload)
} catch (e) {
// ignore
}
}
}