promise-with-retry
v2.0.1
Published
Easily retry operations with any retry strategy you want.
Downloads
48
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: valueopresolved
op_reject
op is rejected
myRetry.on('op_reject', (retryOptions, error) => {
});error: erroroprejected
retry
event before op is executed
myRetry.on('retry', (retryOptions) => {
});
finish
op has stop retry
myRetry.on('finish', (retryOptions) => {
});API
RetryOp.buildOperation(fn)
fn:asyncfunction 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
oprejected - data: value
opresolved
- 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
