Skip to content

Instantly share code, notes, and snippets.

@jasocox
Created July 9, 2019 20:42
Show Gist options
  • Save jasocox/ca7b478a80b4effc329c7b8eae95fb7b to your computer and use it in GitHub Desktop.
Save jasocox/ca7b478a80b4effc329c7b8eae95fb7b to your computer and use it in GitHub Desktop.
Resolving a promise chain (promise.js "all" is broken)
#!/usr/bin/env node
console.log("Promise test");
var p1, p2, p3, p4;
var r1, r2, r3, r4;
p1 = new Promise(res => r1 = res);
p2 = new Promise(res => r2 = res);
p3 = new Promise(res => r3 = res);
p4 = new Promise(res => r4 = res);
function resolveAll(list) {
var item = list.shift();
if (list.length) {
console.log("WAITING");
return item.then(() => resolveAll(list));
}
console.log("LAST WAITING");
return item;
}
console.log("Start waiting");
resolveAll([p1, p2, p3, p4])
.then(() => console.log("DONE"));
setTimeout(() => r1(true), Math.random() * 1000);
setTimeout(() => r2(true), Math.random() * 2000);
setTimeout(() => r3(true), Math.random() * 3000);
setTimeout(() => r4(true), Math.random() * 4000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment