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']