Promise.all如何实现
时间: 2023-10-20 10:25:05 浏览: 115
Promise.all是一个静态方法,它接收一个由Promise实例组成的数组作为参数,返回一个新的Promise实例。
Promise.all的实现:
1. 创建一个新的Promise实例,用来返回所有Promise实例的结果。
2. 遍历传入的Promise实例数组,为每个实例添加then方法。
3. 每个实例的then方法中,将实例的结果添加到结果数组中,并检查结果数组长度是否与传入的Promise实例数组长度相同。如果相同,则意味着所有Promise实例都已经执行完成,此时使用resolve方法将结果数组传递给新的Promise实例。
4. 如果有任何一个Promise实例执行失败,则使用reject方法将错误信息传递给新的Promise实例。
代码实现如下:
```JavaScript
Promise.all = function(promises) {
return new Promise(function(resolve, reject) {
var results = [];
var count = 0;
for (var i = 0; i < promises.length; i++) {
promises[i].then(function(result) {
results[i] = result;
count++;
if (count === promises.length) {
resolve(results);
}
}, function(error) {
reject(error);
});
}
});
}
```
阅读全文