UNPKG

event-on

Version:

A high-performance event handler optimized for high-frequency scenarios with support for regular and one-time events

84 lines (82 loc) 2.21 kB
/** * 高性能事件处理器 - event-on * 专注于高频场景优化,支持普通事件和一次性事件 * 采用扁平化存储和内存复用策略提升性能 */ type Callback = (...args: any[]) => boolean | void; declare class EventOn { _events: Record<number | string, (Callback | any | boolean)[]>; _eventHashCache: Record<string, { h: number; t: number; }>; _hashCacheSize: number; _arrayPool: { [k: number]: (Callback | any | boolean)[][]; }; /** * 计算事件名哈希值(长事件名优化) */ private _getEventKey; /** * 从复用池获取数组 */ private _acquireArray; /** * 将数组回收到复用池 */ private _releaseArray; /** * 通用事件绑定(内部方法) */ private _bind; /** * 绑定普通事件 * @param event 事件名 * @param callback 回调函数 * @param context 回调上下文(this指向) */ on(event: string, callback: Callback, context?: any): this; /** * 绑定一次性事件(触发后自动解绑) * @param event 事件名 * @param callback 回调函数 * @param context 回调上下文(this指向) */ once(event: string, callback: Callback, context?: any): this; /** * 解绑事件 * @param event 事件名 * @param callback 要解绑的回调(可选) * @param context 回调上下文(可选) */ off(event: string, callback?: Callback, context?: any): this; /** * 触发事件 * @param event 事件名 * @param args 传递给回调的参数 * @returns 是否被阻止传播 */ trigger(event: string, ...args: any[]): boolean; /** * 清理小数组(原地修改) */ private _cleanupSmall; /** * 清理大数组(新建数组) */ private _cleanupLarge; /** * 检查事件是否有有效回调 */ has(event: string): boolean; /** * 强制清理所有已删除项 */ cleanupAll(): void; /** * 销毁实例,释放所有资源 */ destroy(): void; } export { type Callback, EventOn };