Skip to content

Instantly share code, notes, and snippets.

@mattmazzola
Created April 29, 2015 01:01
Show Gist options
  • Save mattmazzola/174d7e71aae090058e63 to your computer and use it in GitHub Desktop.
Save mattmazzola/174d7e71aae090058e63 to your computer and use it in GitHub Desktop.
Sequential Promises (No Generators)
let log = (x) => {
console.log(x);
return x;
};
let delayedPromise = (value, delay) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(value);
}, delay);
});
};
let promiseGenerator = (...args) => {
return () => {
return delayedPromise(...args).then(log);
};
};
var promiseGenerators = [
promiseGenerator("p1", 1000),
promiseGenerator("p2", 1000),
promiseGenerator("p3", 1000),
promiseGenerator("p4", 1000)
];
var promises = promiseGenerators.reduce((promises,p) => {
var lastPromise;
if(promises.length === 0) {
lastPromise = Promise.resolve();
} else {
lastPromise = promises[promises.length - 1];
}
let newPromise = lastPromise.then(function(results) {
return p();
});
promises.push(newPromise);
return promises
}, []);
var results = Promise.all(promises).then(log)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment