JavaScript 实现 Promise.all 方法
function myPromiseAll(list) {
let resArray = [];
let count = 0;
return new Promise((resolve, reject) => {
list.forEach((item) => {
item.then((res) => {
resArray.push(res);
count++;
if(count === list.length)
resolve(resArray);
})
})
})
}
验证实现是否正确
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1);
}, 1000);
})
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2);
}, 2000);
})
function myPromiseAll(list) {
let resArray = [];
let count = 0;
return new Promise((resolve, reject) => {
list.forEach((item) => {
item.then((res) => {
resArray.push(res);
count++;
if(count === list.length)
resolve(resArray);
})
})
})
}
myPromiseAll([p1, p2])
.then((res) => {
console.log(res);
})
Promise.all([p1, p2])
.then((res) => {
console.log(res);
})
调用自己实现的 myPromiseAll 和原生的 Promise.all 方法结果相同,均为 [1,2],验证正确。