Promise.all find rejected and resolved

Findling the promises which resolved and which rejected

by Varun Sukheja

HTML

<script src="https://cdn.jsdelivr.net/gh/eu81273/jsfiddle-console/console.js"></script>

JavaScript

const promise1 = Promise.resolve('promise-1');
const promise2 = Promise.reject('promise-2');
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, '100', 'promise-3');
});

/* Promises array */
const promises = [promise1, promise2, promise3];

/* This does the wonder */
const mappedPromises = promises.map((p, i) => {
  return p
    .then((value) => ({
      status: 'resolved',
      value,
      index: i
    }))
    .catch((reason) => ({
      status: 'rejected',
      reason,
      index: i
    }));
});

/* Using Promise.all() as usual */
Promise.all(mappedPromises)
  .then(
    (results) => {
    /* Filtering resolved promises */
      const resolved = results.filter(result => result.status === 'resolved');
      console.log('Resolved promises are:-');
      console.log(resolved);
      /* Filtering rejected promises */
      const rejected = results.filter(result => result.status === 'rejected');
      console.error('Rejected promises are:-');
      console.error(rejected);
    })
  .catch(error => console.error(error));