push-it-to-the-limit
Version:
Delay function wrappers for common purposes. Throttle, debounce and ratelimit with promises
38 lines (37 loc) • 993 B
TypeScript
export type IAny = any;
export type IHandler = (...args: any) => any;
export type ILimit = number;
export type IOpts = {
target: IHandler;
delay: number;
context?: IAny;
limit?: ILimit;
};
export type TimeoutID = number;
export type ITarget = IHandler | IOpts;
export type IRepeater = {
(...args: any): any;
target: IHandler;
timeout?: TimeoutID;
limit?: ILimit;
delay?: number;
args?: Array<IAny>;
context?: IAny;
};
export type IWrapper = {
(fn: ITarget): IRepeater;
};
/**
* Creates a new repeater.
* @param {Function} target
* @param {number} delay
* @param {*} [context]
* @param {number} [limit]
* @return {IRepeater}
* @property {Function/IOpts} target
* @property {number} delay
* @property {*} context
* @property {Array<*>} [args] arguments of the last invocation
* @property {number} [timeout] TimeoutID
*/
export declare function createRepeater(target: ITarget, delay: number, context?: IAny, limit?: ILimit): IRepeater;