feat(async): retry method definition update. Closes #41767 (#41792)

- support for optional parameters
- support for differnet return depending on invocation params

Thanks!
This commit is contained in:
Piotr Błażejewicz (Peter Blazejewicz) 2020-01-28 01:00:33 +01:00 committed by Wesley Wigham
parent f253912150
commit 92434b8642
2 changed files with 45 additions and 12 deletions

View File

@ -222,14 +222,26 @@ export function auto<R extends Dictionary<any>, E = Error>(tasks: AsyncAutoTasks
export function autoInject<E = Error>(tasks: any, callback?: AsyncResultCallback<any, E>): void;
export function retry<T, E = Error>(
opts: number | {
times: number,
interval: number | ((retryCount: number) => number),
errorFilter?: (error: Error) => boolean
},
task: (callback: AsyncResultCallback<T, E>, results: any) => void,
callback: AsyncResultCallback<any, E>
): void;
opts?:
| number
| {
times?: number;
interval?: number | ((retryCount: number) => number);
errorFilter?: (error: Error) => boolean;
},
task?: (callback: AsyncResultCallback<T, E>, results: any) => void,
): Promise<void>;
export function retry<T, E = Error>(
opts?:
| number
| {
times?: number;
interval?: number | ((retryCount: number) => number);
errorFilter?: (error: Error) => boolean;
},
task?: (callback: AsyncResultCallback<T, E>, results: any) => void,
callback?: AsyncResultCallback<any, E>,
): void;
export function retryable<T, E = Error>(opts: number | {times: number, interval: number}, task: AsyncFunction<T, E>): AsyncFunction<T, E>;
export function apply<E = Error>(fn: Function, ...args: any[]): AsyncFunction<any, E>;

View File

@ -312,10 +312,31 @@ async.auto<A>({
(err, results) => { console.log('finished auto'); }
);
async.retry(3, (callback, results) => { }, (err, result) => { });
async.retry({ times: 3, interval: 200 }, (callback, results) => { }, (err, result) => { });
async.retry({ times: 3, interval: (retryCount) => 200 * retryCount }, (callback, results) => { }, (err, result) => { });
async.retry({ times: 3, interval: 200, errorFilter: (err) => true }, (callback, results) => { }, (err, result) => { });
async.retry(); // $ExpectType Promise<void>
async.retry(3); // $ExpectType Promise<void>
// $ExpectType Promise<void>
async.retry(
3,
(callback, results) => {},
);
// $ExpectType void
async.retry(
{ times: 3, interval: 200 },
(callback, results) => {},
(err, result) => {},
);
// $ExpectType void
async.retry(
{ times: 3, interval: retryCount => 200 * retryCount },
(callback, results) => {},
(err, result) => {},
);
// $ExpectType void
async.retry(
{ times: 3, interval: 200, errorFilter: err => true },
(callback, results) => {},
(err, result) => {},
);
async.parallel([
(callback: (err: Error, val: string) => void) => { },