0.1.1 • Published 8 years ago

patience-js v0.1.1

Weekly downloads
6
License
MIT
Repository
github
Last release
8 years ago

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

    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,
  }
}
Patience()
  .request({ 
      method: 'GET', 
      url: 'api.com/endpoint/3' })
  .runStrategy('User-API-Calls');