|
|
- export function retry(this: any, func: Function, retryMax: number, config: any = {}) {
- let retryNum = 0;
- const { retryDelay = 500, errorHandler = () => true } = config;
- const funcR = (...arg) => {
- return new Promise((resolve, reject) => {
- func(...arg)
- .then(result => {
- retryNum = 0;
- resolve(result);
- })
- .catch(err => {
- if (retryNum < retryMax && errorHandler(err)) {
- retryNum++;
- setTimeout(() => {
- resolve(funcR(...arg));
- }, retryDelay);
- } else {
- retryNum = 0;
- reject(err);
- }
- });
- });
- };
-
- return funcR;
- }
|