Retry
Naive implementation of a retry system.
Features
- Max attempts
- Add delay between retries
- Callback to interrupt retries
Installation
npm install --save @canastro/retry
Usage
const retry = require('@canastro/retry');
const callback = (min, max) => () => (Math.random() * (max - min)) + min;
const isResolved = result => result > 19;
const options = {
maxAttempts: 5,
intervalTimeout: 1000
};
retry(callback(2, 20), options, isResolved)
.then(result => {
console.log('result: ', result);
})
.catch(() => {
console.log('error');
});
PS: Check sandbox for more examples, you can try them by running node sandbox/#filename#
Parameters
Parameter | Type | Default | Description |
---|
callback | Function | | User's function to be retried |
options | Object | {} | User's options |
[options.maxAttempts] | Number | 10 | Number of max attempts |
[options.intervalTimeout] | Number | 0ms | Number of milliseconds to wait before retrying |
isResolved | Function | () => true | Function to be used as a stop condition |
Returns
- If a isResolved function is provided it will return a fulfilled promise when this returns true;
- If no isResolved was given it will return true once the provided callback is correctly fulfilled;
- It will return a rejected promise the max attempts was reached