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
TypeScript
/**
* 高性能事件处理器 - 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 };