1.1.2 • Published 8 years ago

resolutejs v1.1.2

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

resolute.js

Determined, and unwavering.

Github Releases (by Release) GitHub stars

Finally get to retry during a Promise operation (works in modern browsers as well as node.js), zero dependencies.

It includes a very basic but reliable retry mechanism for a Promise operation.

Minimal requirements: 3kb unminified / 0 dependencies.

Use Cases

  • Database retry
  • API retry
  • Anything...

Packages

None yet.

Usage

Download resolute.js from Github Releases (by Release), create a new instance as shown below and optionally provide a callback that is executed every retry, which gives you the current retry count.

Node.js

var Resolute = require("./resolute");

var somePromiseOperation = function() {
    return new Promise(function(resolve, reject) {
        // Make it fail...
        if (err) return reject(err);
        resolve("success");
    });
};

var resolute_options = {
    // Reference to your Promise function, note: this Promise will always fail.
    operation: somePromiseOperation,
    // Maximum number of times to attempt
    maxRetry: 5,
    // Delay between retries in milliseconds
    delay: 2000
};

var resolute_callback = function(retryCount) {
    console.log(retryCount);
};

var resolute = new Resolute(resolute_options, resolute_callback);

// Run the operation stored in options.
resolute.run().then(null).catch(function(err) {
    console.log("failed after trying: " + resolute.maxRetry + " times, with error: " + err);
});

// Pass in a new operation to perform using the same Resolute instance.
resolute.run(somePromiseOperation).then(null).catch(function(err) {
    console.log("failed after trying: " + resolute.maxRetry + " times, with error: " + err);
});

Browser

<script src="resolute.js"></script>
var somePromiseOperation = function() {
    return new Promise(function(resolve, reject) {
        // Make it fail...
        if (err) return reject(err);
        resolve("success");
    });
};

var resolute_options = {
    // Reference to your Promise function, note: this Promise will always fail.
    operation: somePromiseOperation,
    // Maximum number of times to attempt
    maxRetry: 5,
    // Delay between retries in milliseconds
    delay: 2000
};

var resolute_callback = function(retryCount) {
    console.log(retryCount);
};

var resolute = new Resolute(resolute_options, resolute_callback);

// Run the operation stored in options.
resolute.run().then(null).catch(function(err) {
    console.log("failed after trying: " + resolute.maxRetry + " times, with error: " + err);
});

// Pass in a new operation to perform using the same Resolute instance.
resolute.run(somePromiseOperation).then(null).catch(function(err) {
    console.log("failed after trying: " + resolute.maxRetry + " times, with error: " + err);
});