com-tools
Version:
com-tools 提供了一些通用的工具函数;
89 lines • 5.51 kB
TypeScript
import type { AnyFunction } from "type-tls";
/**
* 函数包装的基础选项
*/
export interface FrequencyWrapOptions<T extends AnyFunction = AnyFunction> {
/** 要包装的函数 */
fn: T;
/** 时间间隔,单位:毫秒 */
interval: number;
}
/**
* throttle 的选项
*/
export interface ThrottleOptions<T extends AnyFunction = AnyFunction> extends FrequencyWrapOptions<T> {
/** 是否在间隔结束后执行最后一次调用,默认 true */
trailing?: boolean | null;
}
/**
* 节流函数:在指定时间间隔内,函数最多执行一次
* @param options - 选项,创建后修改选项值会立即生效
*/
export declare function throttle<T extends AnyFunction>(options: ThrottleOptions<T>): T;
/**
* debounce 的选项
*/
export interface DebounceOptions<T extends AnyFunction = AnyFunction> extends FrequencyWrapOptions<T> {
/** 是否在等待开始时立即执行,默认 false */
leading?: boolean | null;
}
/**
* 防抖函数:在最后一次调用后等待指定时间,若期间无新调用则执行
* @param options - 选项,创建后修改选项值会立即生效
*/
export declare function debounce<T extends AnyFunction>(options: DebounceOptions<T>): T;
/**
* cachedCall 的选项
*/
export interface CachedFrequencyWrapOptions<Fun extends AnyFunction = AnyFunction> extends FrequencyWrapOptions<Fun> {
/** 是否在缓存值为空时重新调用 fn,默认 false */
nonNull?: boolean | null;
}
/**
* 缓存调用:在指定时间间隔内重复调用时返回上一次的返回值,间隔过后重新执行并缓存新结果
* @param options - 选项,创建后修改选项值会立即生效
*/
export declare function cachedCall<Fun extends AnyFunction>(options: CachedFrequencyWrapOptions<Fun>): Fun;
/**
* asyncCachedCall 的选项
*/
export interface AsyncCachedCallOptions<Fun extends (...args: any) => Promise<any> = (...args: any) => Promise<any>> extends FrequencyWrapOptions<Fun> {
/** fn 调用失败时是否忽略错误,为 true 时回退返回上一次成功的缓存值(若尚无缓存值仍会抛出错误),默认 false */
ignoreError?: boolean | null;
}
/**
* 异步缓存调用:到达间隔后调用 fn 获取新值并缓存;未到达间隔时直接返回上一次成功的缓存值
* 在 fn 的异步结果到达之前重复调用会等待同一个进行中的调用,返回相同的结果,不会拿到旧的缓存值也不会重复触发 fn;fn 调用失败时不推进间隔,下一次调用会立即重试
* @param options - 选项,创建后修改选项值会立即生效
*/
export declare function asyncCachedCall<Fun extends (...args: any) => Promise<any>>(options: AsyncCachedCallOptions<Fun>): Fun;
/**
* sharedCachedCall 的选项
*/
export interface SharedCachedCallOptions<Fun extends AnyFunction = AnyFunction> extends FrequencyWrapOptions<Fun> {
/** 获取缓存值的函数,在未到达调用间隔时用来获取最后一次调用的值;入参为本次调用的 this */
getValue: (this: ThisParameterType<Fun>, thisArg: ThisParameterType<Fun>) => Awaited<ReturnType<Fun>>;
/** 判断本次调用是否应当(重新)开始计时的函数,入参依次为 fn 刚获取的值、本次调用的 this;省略时总是重新计时(等价于返回 true)。适用于 fn 自身返回值带有起点未知的有效期(如内部已有缓存)的场景,通过该函数探测有效期的起点,使自身计时和 fn 内部周期对齐 */
shouldRestart?: ((this: ThisParameterType<Fun>, value: Awaited<ReturnType<Fun>>, thisArg: ThisParameterType<Fun>) => boolean | null | undefined) | null;
}
/**
* 共享缓存调用:目标值可能由多个函数获取,每个函数各自限制调用间隔,缓存值由外部(如共享变量)统一维护
* 未到达间隔时调用 getValue 获取最后一次调用的值;到达间隔后调用 fn 获取新值并返回;若指定了 shouldRestart,只有其返回 true 时才会以本次调用为起点重新计时,否则不推进间隔,下一次调用会立即重试 fn
* @param options - 选项,创建后修改选项值会立即生效
*/
export declare function sharedCachedCall<Fun extends AnyFunction>(options: SharedCachedCallOptions<Fun>): Fun;
/**
* asyncSharedCachedCall 的选项
*/
export interface AsyncSharedCachedCallOptions<Fun extends (...args: any) => Promise<any> = (...args: any) => Promise<any>> extends SharedCachedCallOptions<Fun> {
/** fn 调用失败时是否忽略错误,为 true 时回退调用 getValue 获取缓存值,默认 false */
ignoreError?: boolean | null;
}
/**
* 异步共享缓存调用:目标值可能由多个函数获取,每个函数各自限制调用间隔,缓存值由外部(如共享变量)统一维护
* 未到达间隔时调用 getValue 获取最后一次调用的值;到达间隔后调用 fn 获取新值;在 fn 的异步结果到达之前重复调用会等待同一个进行中的调用,防止误读旧缓存值或重复发起调用
* 若指定了 shouldRestart,只有其返回 true 时才会以本次调用为起点重新计时;fn 调用失败或 shouldRestart 返回 false 时都不推进间隔,下一次调用会立即重试
* @param options - 选项,创建后修改选项值会立即生效
*/
export declare function asyncSharedCachedCall<Fun extends (...args: any) => Promise<any>>(options: AsyncSharedCachedCallOptions<Fun>): Fun;
//# sourceMappingURL=function.d.ts.map