patience-js
v0.1.1
Published
A promise-based AJAX helper library which allows retry configuration and strategy-based request building. AngularJS supported.
Downloads
1
Readme
Installation
Download via npm.
$ npm install patience-js --save
Add retry library to your project:
<!-- PatienceJS-->
<script src="node_modules/patience-js/dist/patience.min.js"></script>
Usage
For vanilla JS project:
var retryCall = Patience();
For Angular.js library
// inject PatienceJS module into your app
angular.module('myApp', ['PatienceJS']);
Basic usage of retry library in an angular service.
// inject the $httpRetry service anywhere you would like to use Patience-JS
angular.module('myApp').service('API', ['$httpRetry', function () {
this.getUser = function (userId) {
// Use retry functions to build and run a retry request
return $httpRetry
// ajax request params
.request({ url: 'api.com/users/' + userId, method: 'GET' })
// logical grouping
.group('User')
// retry
.retry({ max: 1, interval: 500 })
.reAttempt({ max: 1, interval: 2000 })
.run() // returns a promise
.then(function (res) {
return res;
})
.catch(function (err) {
//
})
.progress(function (msg) {
//
});
};
}]);
API
Please note that if you are using Angular JS, replace Patience()
with $httpRetry
in the examples below.
PatienceJS provides the following chainable methods:
Example:
Patience()
.request({
method: 'GET',
url: 'api.com/endpoint/3' });
Example:
Patience()
.request({
method: 'GET',
url: '/users/3' })
.group('Users');
- 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
Patience()
.request({
method: 'GET',
url: 'api.com/endpoint/3' })
.retry();
// Using custom retry options
Patience()
.request({
method: 'GET',
url: 'api.com/endpoint/3' })
.retry({
max: 10,
interval: 1000 });
Examples:
// Using default re-attempt options
Patience()
.request({
method: 'GET',
url: 'api.com/endpoint/3' })
.retry()
.reAttempt();
// Using custom re-attempt options
Patience()
.request({
method: 'GET',
url: 'api.com/endpoint/3' })
.retry()
.reAttempt({
max: 5,
interval: 3000 });
Example
Patience()
.request({
method: 'GET',
url: 'api.com/endpoint/3' })
.retry()
.reAttempt()
.run(); // executes the promise
{
group: 'profile-api-calls',
retry: {
max: 10,
interval: 3000,
},
reAttempt: {
max: 10,
interval: 5000,
}
}
Example
Patience()
.request({
method: 'GET',
url: 'api.com/endpoint/3' })
.runStrategy('User-API-Calls');