Try including function
in declaration of foo
, using recursion
function foo() {
var n = String(new Date().getTime()).slice(-1);
// if `n` < 5 reject `n` , else resolve `n`
return Promise[n < 5 ? "reject" : "resolve"](n)
.then(function(value) {
return value
// here I choose if I want to resolve or reject.
})
.catch(function(err) {
return Promise.reject(["rejected", err])
});
}
(function repeat() {
var promise = Promise.resolve(foo());
return promise
.then(function(data) {
console.log("complete", data)
// I know here what I have to return.
})
.catch(function(err) {
// I want to repeat the foo function until it is resolved and not rejected.
console.log(err);
if (err[0] === "rejected") repeat()
})
}())