function promiseAll(promiseList) { return new Promise((resolve,reject)=>{ if(!Array.isArray(promiseList)) { return reject(new TypeError("Argument is not Array")) } let result = []; let count = 0; if(promiseList.length === 0) { return resolve([]) } promiseList.forEach((item,index)=>{ Promise.resolve(item).then(res=>{ result[index] = res; count++; if(count === promiseList.length) { resolve(result) } }) .catch(err=>{ reject(err) }) }) }) }