Patience JS
A promise-based AJAX library with retry strategies.
Installation | Usage | API
Installation
Download via npm.
$ npm install patience-js --save
Add retry library to your project:
<!-- PatienceJS-->
Usage
For vanilla JS project:
var retryCall = ;
For Angular.js library
// inject PatienceJS module into your appangular;
Basic usage of retry library in an angular service.
// inject the $httpRetry service anywhere you would like to use Patience-JSangular;
API
Please note that if you are using Angular JS, replace Patience()
with $httpRetry
in the examples below.
PatienceJS provides the following chainable methods:
##### .request(requestParams) * **required** * Standard request parameters passed to [axios ajax helper library](https://github.com/mzabriskie/axios)
Example:
;
##### .group(groupName) * A group to which the current request belongs. * If a request fails and is being retried or re-attempted, all requests for that group will be blocked until the retry/re-attempt cycle is complete * Parameters: * **groupName** (string): name of the group to which this retry AJAX call belongs
Example:
;
##### .retry(retryParams)
- Sets the retry parameters for current chained request
- If not used or null parameters are provided, defaults are used
- Default parameters:
{ max: 2, interval: 100 }
- max (int): the maximum number of times to retry the request before failing
- interval (int): the interval of time, in milliseconds, to wait between each retry
- Default parameters:
Examples:
// Using default retry options ; // Using custom retry options ;
##### .reAttempt(reAttemptParams) * Sets the re-attempt parameters for current chained request * If not used, re-attempts will not occur * If null parameters are provided, defaults are used * Default parameters: `` { max: 3, interval: 1000, intervalMultiplicator: 1 } `` * **max** (int): the maximum number of times to re-attempt the request before failing * **interval** (int): the interval of time, in milliseconds, to wait between each re-attempt * **intervalMultiplicator** (int): Number to multiply the interval by upon each subsequent failure. Used for exponential or linear back-off strategies.
Examples:
// Using default re-attempt options ; // Using custom re-attempt options ;
##### .run() * **Required** in order to execute the request. * Runs the currently configured request * Parameters: None
Example
; // executes the promise
##### .addStrategy(strategyName, strategyOptions) * Adds strategy to the library for re-use later * You may add any combination of retry, reAttempt, group, and request parameters to a strategy * Parameters: * **strategyName** (string): Name of the strategy * **strategyOptions** (Object):
group: 'profile-api-calls' retry: max: 10 interval: 3000 reAttempt: max: 10 interval: 5000
##### .runStrategy(strategyName) * Run a pre-configured strategy * Strategies can be added with the `` addStrategy `` method * Parameters: * **strategyName** (string): Name of the strategy to run
Example
;