const promiseAll = (promises) => {
return new Promise((resolve, reject) => {
if (!Array.isArray(promises)) reject('Arguments must be an array');
const promisesNum = promises.length;
const promisesArr = new Array(promisesNum);
let resolveCounter = 0;
let resolveValues = [];
for(let i = 0; i < promisesNum; i++) {
Promise.resolve(promises[i]).then(value => {
resolveCounter++;
resolveValues.push(value);
if(resolveCounter === promisesNum) {
return resolve(resolveValues);
}
}, (info) => {
return reject(info)
});
}
});
};
const a = new Promise((resolve, reject) => resolve('a'))
const b = new Promise((resolve, reject) => resolve('b'))
const c = new Promise((resolve, reject) => resolve('c'))
promiseAll([ a, b, c ]).then(values => console.log(values))