Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
"use strict";
function all (...promises) {
   const outerPromise = new Promise((resolve, reject) => {
      let counter = 0;
      const values = [];
      let rejected = false;
      promises.forEach(
         (promise, idx) => {
           console.log('promise: ', promise);
            promise.then(val => {
                  console.log('promise.then handler', val);
                  counter++;
                  values[idx] = val;
                  if (counter === promises.length)
                     resolve(values);
               },
               () => {
                   console.log('reject handler - rejected', rejected);
                  if (!rejected) {
                     reject(new Error(`${promise} was rejected!`));
                     rejected = true;
                  }
               }
            );
         }
      );
   });
   return outerPromise;
};
const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(42);
const promise3 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 100, 'foo');
});
all([/*promise1,*/ promise2, promise3]).then(function(values) {
  console.log(values);
}).catch(err => {
  console.log('error '+err.message)
});
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers