JSFiddle - React, Tailwind, and code Playground

by hughes

JavaScript

var retry = function (requestFn, maxTries, fuzzPeriod) {
    var tryCount = 0;
    var _retry = function () {
        tryCount++;
        if (tryCount > maxTries) {
            // abort, max tries exceeded
            return;
        }
        var fuzz = Math.random() * fuzzPeriod; // ms
        setTimeout(function () {
            requestFn().fail(_retry);
        }, fuzz);
    }
    return _retry;
}

var success = function () {
    console.log('how did this succeed?');
}

function makeRequest() {
    var promise = $.ajax('http://not-real.example.com');
    promise.done(success);
    return promise
}

makeRequest().fail(retry(makeRequest, 10, 1000));