JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://rawgit.com/kriskowal/q/v1/q.js"></script>
JavaScript
// Call to reset the session (after a method that causes the session ID to change, e.g. get())
var resetSession = function(callback, err, result) {
var _this = this,
retries = 0,
maxRetries = 10,
done = false,
success = function() { console.log("success"); if(callback) { callback(err, result); }},
failure = function() { console.log("tick..."); if(retries++ < maxRetries) { launch(); } else { throw "Timeout waiting for session"; } },
launch = function() {
delay(500).then(fetch).then(success).fail(failure).done();
};
launch();
};
var myCount = 0;
var delay = function(delay) {
console.log("Delaying...");
var defer = Q.defer();
setTimeout(function() {
console.log("Tick resolving");
defer.resolve();
}, delay);
return defer.promise;
};
var fetch = function(delay) {
console.log("Fetching...");
var defer = Q.defer();
setTimeout(function() {
console.log("Fetch resolving");
if(myCount++ < 5)
defer.reject();
else
defer.resolve();
}, delay);
return defer.promise;
};
resetSession(null);