promise.all polyfill
by crackingthefrontendinterview
JavaScript
// create a sample promise
function task(time) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(time);
}, time);
});
}
const taskList = [task(1000), task(5000), task(3000)];
function newPromiseAll(promises) {
const result = [];
let i = 0;
return new Promise((resolve, reject) => {
promises.forEach((promise, idx) => {
promise.then(resp => {
result[idx] = resp;
i++;
if (promises.length === i) {
resolve(result);
}
})
.catch(err => reject(err))
})
})
}
newPromiseAll(taskList)
.then(resp => {
console.log("Response : ", resp)
}, err => {
console.log(err)
})