promise.all用法实际使用
时间: 2025-02-14 10:02:42 浏览: 32
### Promise.all 的实际使用方法
#### 语法说明
`Promise.all(iterable)` 接受一个可迭代对象作为参数,通常是一个数组。这个可迭代对象中的每一个元素都应该是一个 `Promise` 对象。当所有的 `Promise` 都被解决(resolved),或者有一个 `Promise` 被拒绝(rejected),则 `Promise.all()` 返回一个新的 `Promise`。
如果所有输入的 `Promise` 成功,则返回的新 `Promise` 将解析为包含所有已解析值的数组[^3]。如果有任何 `Promise` 失败,则整个操作立即失败并调用 `catch` 方法处理错误[^5]。
#### 使用案例
假设存在多个异步请求需要并发执行,并希望在所有请求完成后统一处理数据:
```javascript
// 定义几个模拟网络请求的函数
function requestA() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve('Data from A'), 100);
});
}
function requestB() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve('Data from B'), 200);
});
}
function requestC() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve('Data from C'), 300);
});
}
```
通过 `Promise.all` 并发发起这些请求并将它们的结果收集起来:
```javascript
async function fetchData() {
try {
const results = await Promise.all([requestA(), requestB(), requestC()]);
console.log(results); // 输出 ['Data from A', 'Data from B', 'Data from C']
} catch (error) {
console.error(error.message);
}
}
fetchData();
```
在这个例子中,一旦所有请求完成,就会打印出由各个请求返回的数据组成的数组;而只要有任何一个请求发生错误,便会触发 `catch` 来捕捉异常情况。
阅读全文
相关推荐


















