Promise.all
是 JavaScript 中的一个方法,它接受一个包含多个 Promise 对象的可迭代对象(通常是数组),并返回一个新的 Promise 对象。这个新的 Promise 对象在传入的所有 Promise 对象都已经成功(resolved)时才会被成功,否则只要有一个 Promise 对象被拒绝(rejected),新的 Promise 对象就会被拒绝。
const request1 = fetch('https://api.example.com/endpoint1');
const request2 = fetch('https://api.example.com/endpoint2');
const request3 = fetch('https://api.example.com/endpoint3');
Promise.all([request1, request2, request3])
.then(responses => {
// 所有请求都成功
// 处理 responses
})
.catch(error => {
// 处理任何一个请求失败的情况
});
在这个例子中,Promise.all
会并行发起三个请求,只有当所有请求都成功完成时,才会进入 .then
处理程序。如果其中一个请求失败,则会进入 .catch
处理程序。
使用 map
处理每个响应:
const request1 = fetch('https://api.example.com/endpoint1');
const request2 = fetch('https://api.example.com/endpoint2');
const request3 = fetch('https://api.example.com/endpoint3');
Promise.all([request1, request2, request3])
.then(responses => {
// 使用 map 处理每个响应
const data = responses.map(response => {
if (response.ok) {
return response.json(); // 处理 JSON 数据
} else {
throw new Error('Request failed');
}
});
// data 现在是一个包含每个响应处理结果的数组
console.log(data);
})
.catch(error => {
// 处理任何一个请求失败的情况
console.error(error);
});