UNPKG

@kcutils/models

Version:

Additional DataType and Models

41 lines 1.49 kB
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