4.7.1 Promise.all
by dimitrs_papadimitriou
HTML
<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
JavaScript
var all = function (promises) {
var results = [];
var promisesCompleted = 0;
return new Promise((resolve, reject) => {
promises.forEach((promise, index) => {
promise.then((value) => {
results[index] = value;
promisesCompleted += 1;
if (promisesCompleted === promises.length) {
resolve(results);
}
})
.catch(function (error) {
reject(error);
});
});
});
}
all([
new Promise(resolve => setTimeout(() => resolve('a'), 3000)),
new Promise(resolve => setTimeout(() => resolve('b'), 2000)),
new Promise(resolve => setTimeout(() => resolve('c'), 1000))
]).then(console.log); // ['a','b','c']