Skip to content

Instantly share code, notes, and snippets.

@lvidarte
Created June 27, 2017 20:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lvidarte/1ad819d25b788ef2adab43fe1e270531 to your computer and use it in GitHub Desktop.
Save lvidarte/1ad819d25b788ef2adab43fe1e270531 to your computer and use it in GitHub Desktop.
Node 8 - Promises recursion
var myPromise = (i) => {
let time = Math.floor(Math.random() * 5000) + 5000;
console.log(`new promise ${i} for ${time}ms`)
return new Promise((resolve, reject) => {
let random = Math.floor(Math.random() * 2);
setTimeout(() => {
if (random == 1)
resolve(`Yeah ${i}!`)
else
reject(new Error(`Whoa ${i}!`))
}, time);
})
.then((ok) => {
console.info(ok);
return myPromise(i + 1);
})
.catch((err) => {
console.error(err.message);
return myPromise(i + 1);
});
}
p = myPromise(1);
setInterval(() => console.log('-- state:', p), 500);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment