Promise.all = function(promises) {
let results = [];
return new Promise((resolve, reject) => {
// check if array has any promise
if (!promises.length) {
resolve(results);
return;
}
promises.forEach((p, index) => {
p.then((result) => {
results.push(result);
if (index === promises.length - 1) {
resolve(results);
}
}).catch((err) => reject(err));
});
});
};
let promises = [
Promise.resolve(1),
Promise.resolve('this is 2nd'),
new Promise((resolve, reject) => setTimeout(resolve, 800, '3rd')),
];
Promise.all(promises).then((result) => {
console.log('Promise results', result);
});