promise allSettled

by Artem

JavaScript

'use strict'

const allSettled = promiseArr => {
	let chain = Promise.resolve([]);

	for (let p of promiseArr) {
		  chain = chain.then((prev) => {
      	return p
        	.then(v => [...prev, v])
        	.catch(() => [...prev, null]);
      });
  }
  
  return chain;
};

allSettled([
	Promise.resolve(1),
  Promise.resolve(2),
  Promise.reject(3),
  Promise.resolve(5),
  Promise.reject(7)
]).then(arr => {
	console.log(arr);
});