2.0.1 • Published 8 years ago
promise-with-retry v2.0.1
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