promise-repeat
v0.5.0
Published
A simple dependency-free promise library that retries a given function until it succeeds or certain fail criteria are met. Can also be used to timeout Promises.
Downloads
121
Maintainers
Readme
Promise Repeat
A simple utility that retries a given function until it either succeeds or certain failure criteria are met. It's also useful in case you want to just timeout a Promise.
I wrote this because I couldn't find a small library without dependencies for the purpose of including in a browser environment.
Installation
$ npm install promise-repeat
Usage
somePromiseFunction()
.then(something )
.then(promiseRepeat(fn, options))
.then(...)
.catch(...)
promiseRepeat(fn, options)() // note the trailing () which kicks-off the chain
.then(...)
.catch(...)
Options
| Option | Default | Description |
| ------------------ | ---------------- | ----------- |
| maxAttempts | 3 | Maximum number of attempts to make before failing
| maxTimeout | 3,000 (3 sec) | Maximum amount of time before the promsie gets rejected
| throttle | 0 | How long to wait between calls to the function
| throttleFn | returns throttle | function( retryCount, throttle )
- Custom throttle function to allow for timing adjustments
| boolRetryFn | returns true | function( err, { retryCount: # })
- Function that should return true or false based on err
as to whether or not the function should keep trying. Note that this does not override the maxRetries
or maxTimeout
options. Set those both to Infinity
if you want to rely solely on this option.
| resolveAfterReject | | If the function returns a value after the promise has been rejected due to a timeout, this is called so that you can actually catch the result (in case you need to roll it back, notify user, etc). Potentially called once for each attempt at running the promise
If a promise is rejected it is rejected with the last error, with err.previousErrors = Error[]
added to object