写个Promise.all的封装方法
时间: 2023-11-14 15:12:53 浏览: 86
Promise.all方法可以接收一个Promise对象数组作为参数,返回一个新的Promise对象。当所有的Promise对象都成功时,返回的Promise对象的状态为成功,其结果是一个数组,包含了所有Promise对象的结果。如果其中任何一个Promise对象失败,则返回的Promise对象的状态为失败,其结果是第一个失败的Promise对象的结果。下面是一个Promise.all的封装方法的示例代码:
```
function myPromiseAll(promises) {
return new Promise((resolve, reject) => {
let results = [];
let count = 0;
for (let i = 0; i < promises.length; i++) {
promises[i].then((result) => {
results[i] = result;
count++;
if (count === promises.length) {
resolve(results);
}
}).catch((error) => {
reject(error);
});
}
});
}
```
该方法接收一个Promise对象数组作为参数,返回一个新的Promise对象。在该方法内部,我们定义了一个results数组来存储每个Promise对象的结果,以及一个count变量来记录已经完成的Promise对象的数量。然后,我们使用for循环遍历Promise对象数组,对于每个Promise对象,我们调用它的then方法来获取它的结果。如果该Promise对象成功,我们将其结果存储在results数组中,并将count加1。如果所有的Promise对象都已经完成,我们调用resolve方法并传递results数组作为参数。如果其中任何一个Promise对象失败,我们调用reject方法并传递失败的原因作为参数。
阅读全文