JSFiddle - React, Tailwind, and code Playground
by willseitz
JavaScript
function wait(duration) {
return new Promise((resolve, reject) => {
setTimeout(resolve, duration)
})
}
function fakeSubmit(someId) {
return new Promise((resolve, reject) => {
console.log("Requesting "+someId);
var randomValue = Math.floor(Math.random() * 10) + 1
if (randomValue > 8) {
console.log("SUCCESS");
resolve("SUCCESS");
} else {
console.log("FAILURE");
reject("FAILURE");
}
})
}
var retryOnFailure = (functionToRetry, timesToRetry, delay) => {
var retryCount = timesToRetry;
var failureReason;
var functionToIterate = function(...args) {
if (retryCount < 1) {
return Promise.reject(failureReason);
} else {
retryCount--;
return functionToRetry(...args)
.catch((err) => {
failureReason = err;
return wait(delay)
.then(() => { return functionToIterate(...args)});
})
}
}
return functionToIterate;
}
var getUserInfoFromApi = () => {}
var submit = retryOnFailure(fakeSubmit, 5, 1000);
submit(9)
.then((s) => {
console.log("FINAL SUCCESS => "+s)
})
.catch((f) => {
console.log("FINAL FAILURE => "+f)
})
//wait(1000).then(() => {console.log("hey")}).then(() => {return wait(1000)}).then(() => {console.log("there")})
/*
fakeSubmit(3)
.then(() => {
return fakeSubmit(4);
})
.then(() => {
return wait(2000);
})
.then(() => {
return fakeSubmit(5);
})
.catch((err) => {
console.log("Error happened in chain: "+err)
})*/