Skip to content

Instantly share code, notes, and snippets.

@Rantelo
Created May 23, 2018 22:05
Show Gist options
  • Save Rantelo/84684a7b7babf64183587e61d98945df to your computer and use it in GitHub Desktop.
Save Rantelo/84684a7b7babf64183587e61d98945df to your computer and use it in GitHub Desktop.
An study of promises and modification to Promise.all to not stop execution until actually ALL promises as resolved
const reflect = promise =>
promise.then(
solved => ({value: solved, status: "Resolved"}),
rejected => ({value: rejected, status: "Rejected"})
);
let promises = [
new Promise((resolve, reject) => setTimeout(() => { console.log("finish",1), resolve(1)}, 400)),
new Promise((resolve, reject) => setTimeout(() => { console.log("finish",2), resolve(2)}, 394)),
new Promise((resolve, reject) => setTimeout(() => { console.log("finish",3), reject(3)}, 404)),
new Promise((resolve, reject) => setTimeout(() => { console.log("finish",4), resolve(4)}, 500)),
new Promise((resolve, reject) => setTimeout(() => { console.log("finish",5), reject(5)}, 200)),
new Promise((resolve, reject) => setTimeout(() => { console.log("finish",6), resolve(6)}, 150))
];
Promise.all(promises.map(reflect))
.then(results => {
let res = results.map(result => [result.value, result.status]);
console.log("FINISH all promises", res );
return res;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment