@cclr/emitter
v0.1.55
Published
发布订阅模式
Readme
emitter
轻量发布订阅工具,支持类型安全事件与分组事件。
Usage
npm i @cclr/emitterimport { Emitter, GroupEmitter } from '@cclr/emitter';
const emitter = new Emitter<{
add: (a: number, b: number) => number;
update: (payload: { name: string }) => void;
}>();
const off = emitter.addListener('add', (a, b) => a + b);
const result = emitter.emit('add', 1, 2); // [3]
off();
const group = GroupEmitter.create();
group.addListener('change', (payload) => console.log(payload), 'user');
group.emit('change', { id: 1 }, 'user');API 说明
Emitter<T>:泛型事件发射器,T用于约束事件名与参数类型。new Emitter<T>():创建事件实例。Emitter.create<T>():静态创建事件实例(等价于new Emitter<T>())。emitter.addListener(eventKey, handle):注册监听器,返回取消监听函数。emitter.emit(eventKey, ...args):触发事件并返回监听器返回值数组。emitter.removeListener(eventKey, handle):移除指定监听器。emitter.clearByKey(eventKey):清空某个事件下的全部监听器。emitter.destroy():销毁当前实例上的全部事件监听。GroupEmitter:带分组能力的事件发射器。new GroupEmitter():创建分组事件实例。GroupEmitter.create():静态创建分组事件实例。group.addListener(eventKey, handle, group?):在指定分组中注册监听器(默认公共组)。group.emit(eventKey, params, group?):仅触发指定分组中的同名事件。group.removeListener(eventKey, handle, group?):移除指定分组中的监听器。group.destroy():销毁分组映射与内部发射器。TEventMap:事件映射类型(key -> listener function)。TEventMapHandle<T>:事件映射辅助类型别名。
