promise-with-retry
v2.0.1
Published
Easily retry operations with any retry strategy you want.
Downloads
3
Maintainers
Readme
promise-with-retry
Easily retry operations with any retry strategy you want.
Support async functions or functions returned Promise.
Intall
npm install promise-with-retry --save
Usage
const RetryOp = require('promise-with-retry').default;
function promiseOperation(...args) {
return new Promise((resolve: any, reject: any) => {
// ...
});
}
async function asyncOperation(...args) {
// ...
}
let myOp = RetryOp.buildOperation(promiseOperation);
// or async function:
// let myOp = RetryOp.buildOperation(asyncOperation);
let myRetry = new RetryOp(myAsyncOp(500), (retryOptions) => {
if (retryOptions.returns.error) {
// retry after 5000ms
return 5000;
}
// finish
return;
});
Events
op_resolve
op
is resolved
myRetry.on('op_resolve', (retryOptions, data) => {
});
data
: valueop
resolved
op_reject
op
is rejected
myRetry.on('op_reject', (retryOptions, error) => {
});
error
: errorop
rejected
retry
event before op
is executed
myRetry.on('retry', (retryOptions) => {
});
finish
op
has stop retry
myRetry.on('finish', (retryOptions) => {
});
API
RetryOp.buildOperation(fn)
fn
:async
function or function returnedPromise
new RetryOp(op, retryStrategy)
op
: value returned by RetryOp.buildOperation(fn)retryStrategy
: (retryOptions) => {} return a number (ms) as timeout, the retry will happen exactly after that time in milliseconds. if return is not number, will not retry.
retryOptions
:
startTime
: number, mstotalRetryCount
: numberreturns
: return ofop
:- error: error
op
rejected - data: value
op
resolved
- error: error
Example
typescript example:
import RetryOp from 'promise-with-retry';
async function asyncOperation(ms: number) {
// ...
}
let myAsyncOp = RetryOp.buildOperation(asyncOperation);
let myRetry = new RetryOp(myAsyncOp(500), (retryOptions) => {
if (retryOptions.totalRetryCount < 3) {
// will retry after 500ms
return 500;
}
// stop retry
return;
});
myRetry.on('finish', (retryOptions) => {
});
Test
npm tet