Promise.all 实现
时间: 2023-11-10 20:05:01 浏览: 161
Promise.all 是一个将多个 Promise 实例包装成一个新的 Promise 实例的方法,当所有的 Promise 实例都成功时,返回的新 Promise 实例才会成功,其中一个失败则返回的新 Promise 实例也会失败。
以下是 Promise.all 的实现:
```javascript
function promiseAll(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 实例数组,将每个 Promise 实例的结果存储在一个数组中。当所有的 Promise 实例都成功时,我们将存储结果的数组作为参数传递给 resolve 函数,使得返回的新 Promise 实例也成功。如果其中一个 Promise 实例失败,则直接调用 reject 函数,使得返回的新 Promise 实例也失败。
阅读全文