基于promise实现promise.all方法
时间: 2023-11-17 19:04:09 浏览: 96
Promise Promise.all 的使用
基于Promise实现Promise.all方法的步骤如下:
1.将每个请求封装成Promise对象,当请求到数据后都resolve出去,再将每个Promise对象存储在一个数组中。
2.使用Promise.all方法将每个Promise对象作为参数传入进去。这样每个API的Promise对象状态都resolve“解决后”,就能在Promise.all().then中拿到所有API请求完成的状态,从而实现效果。
3.需要注意的是,当请求结果异常时,也需要通过reject将Promise状态抛出去,否则loading会一直存在。
下面是一个基于Promise实现Promise.all方法的示例代码:
```javascript
function promiseAll(promises) {
return new Promise(function(resolve, reject) {
var results = [];
var count = promises.length;
promises.forEach(function(promise, index) {
promise.then(function(result) {
results[index] = result;
count--;
if (count === 0) {
resolve(results);
}
}).catch(function(error) {
reject(error);
});
});
});
}
// 示例
var promise1 = Promise.resolve(1);
var promise2 = Promise.resolve(2);
var promise3 = Promise.resolve(3);
promiseAll([promise1, promise2, promise3]).then(function(values) {
console.log(values); // 输出:[1, 2, 3]
}).catch(function(error) {
console.log(error);
});
```
阅读全文