@kcutils/models
Version:
Additional DataType and Models
41 lines • 1.49 kB
TypeScript
export declare type RetrySystemEventMapping = {
error: Error;
retry: {
error: Error;
countdown: number;
};
"before-run": void;
"after-run": void;
};
export declare type RetrySystemEventName = keyof RetrySystemEventMapping;
declare type Callback<T> = () => Promise<T>;
declare type ParamCallback<P, T> = (p: P) => T;
export declare class RetrySystem {
private delayMs;
private readonly event;
constructor(delayMs: number);
get delay(): number;
/**
* handle when some event occurred. All possible event listed below
*
* 1. `before-run` - execute immediately when call try()
* 2. `after-run` - execute if and only if try callback is success
* 3. `retry` - execute everytime object has retry to execute callback
* - parameter is object {countdown: number, error: Error}
* 4. `error` - execute when try() reject the result and finish retry but still not success
* - parameter is Error
*
* @param type event type
* @param cb callback when event occurred
*/
on<K extends RetrySystemEventName, T extends RetrySystemEventMapping[K]>(type: K, cb: ParamCallback<T, void>): void;
/**
* apply new delay time to current object
*
* @param ms input delay time in millisecond
*/
updateTime(ms: number): void;
try<T>(cb: Callback<T>, limit?: number): Promise<T>;
}
export {};
//# sourceMappingURL=RetrySystem.d.ts.map