$ npm install wing-async-retry
import { runFlatWithLimitedTimeout, runFlatWithLimitedTimes, runWithLimitedTimeout, runWithLimitedTimes } from 'wing-async-retry';
// Or
<script src='/path/to/wing-async-retry/wing-async-retry.js'></script>;
const { runFlatWithLimitedTimeout, runFlatWithLimitedTimes, runWithLimitedTimeout, runWithLimitedTimes } = $WingAsyncRetry;
function getData(n = 99): Promise<string> {
return new Promise((resolve, reject) => {
const random = Math.random();
setTimeout(() => (random > 0.6995 ? resolve(`OK_${n}`) : reject(`Error_${n}`)), random * 800);
});
}
async function test() {
for (let i = 1; i < 3; i++) {
try {
const data = await runWithLimitedTimes(getData, { debug: true, retryTimes: 5 });
console.log('runWithLimitedTimes - Data: ', data);
} catch (error) {
console.log('runWithLimitedTimes - Error: ', error);
}
const result1 = await runFlatWithLimitedTimes(() => getData(i * 10), { debug: true, retryDelay: 1000 });
console.log('runWithLimitedTimes - Flat Data', result1);
try {
const data = await runWithLimitedTimeout(() => getData(i * 20), { debug: true, retryDelay: 1200 });
console.log('runWithLimitedTimes - Data: ', data);
} catch (error) {
console.log('runWithLimitedTimes - Error: ', error);
}
const result2 = await runFlatWithLimitedTimeout(getData, { debug: true, retryTimeout: 6500 });
console.log('runWithLimitedTimes - Flat Data', result2);
console.log(i + '-'.repeat(50));
}
}
Retry a limited number of times. Catch exception or error by
try-catch
Retry a limited number of times. catch exception or error by
[Error/Exception, Data]
flat-format result.
Retry with limited time. Catch exception or error by
try-catch
Retry with limited time. catch exception or error by
[Error/Exception, Data]
flat-format result.
asynchronous functions. such as promises
Property | Type | Description | Required | Default |
---|---|---|---|---|
times | Number | The number of times to retry | No | 3 |
delay | Number | The delay of each retry, in ms
|
No | 4 |
debug | Boolean | Whether to enable log output | No | false |
Property | Type | Description | Required | Default |
---|---|---|---|---|
timeout | Number | The timeout that needs to be retried, in ms
|
No | 5000 |
delay | Number | The delay of each retry, in ms
|
No | 4 |
debug | Boolean | Whether to enable log output | No | false |