const promiseAll = (promises) => { console.log(promises) return new Promise(function(resolve,reject){ const result = [] let count = 0 return promises.forEach(p => { p.then((value)=>{ result[count] = value count = count + 1; if(count === promises.length){ return resolve(result); } }).catch((error)=>{ return reject(error) }) }) }) } const time = (time) => new Promise(function(resolve,reject){ return setTimeout(()=>{resolve(time)},time) }) promiseAll([time(100),time(200),time(300)]) .then(results => console.log("r",results)) .catch(console.error)