axios如何一次发送多个并发请求?
在前端开发中,Axios 提供了几种方法来发送多个并发请求:
Promise.all
: 这是最常用的方法,它接受一个 Promise 数组作为参数,并返回一个新的 Promise。当所有传入的 Promise 都 resolve 时,新的 Promise 才会 resolve,并将所有结果以数组形式返回。如果任何一个 Promise reject,新的 Promise 也会 reject。
import axios from 'axios';
const requests = [
axios.get('/api/users'),
axios.get('/api/products'),
axios.get('/api/orders')
];
Promise.all(requests)
.then(responses => {
const users = responses[0].data;
const products = responses[1].data;
const orders = responses[2].data;
// 处理数据...
})
.catch(error => {
console.error('Error:', error);
});
axios.all
: 这是 Axios 提供的更便捷的方法,其底层也是基于Promise.all
。它接受一个 Axios 请求数组作为参数,用法与Promise.all
类似。
import axios from 'axios';
axios.all([
axios.get('/api/users'),
axios.get('/api/products'),
axios.get('/api/orders')
])
.then(axios.spread((usersRes, productsRes, ordersRes) => {
const users = usersRes.data;
const products = productsRes.data;
const orders = ordersRes.data;
// 处理数据...
}))
.catch(error => {
console.error('Error:', error);
});
axios.spread
可以将 axios.all
返回的结果数组展开成独立的参数,方便直接使用。
for...of
循环 +async/await
: 这种方法可以按顺序发送请求,但每个请求仍然是异步的。如果需要在上一个请求完成后才发送下一个请求,则应该使用这种方法。
import axios from 'axios';
async function fetchData() {
const urls = ['/api/users', '/api/products', '/api/orders'];
const results = [];
for (const url of urls) {
try {
const response = await axios.get(url);
results.push(response.data);
} catch (error) {
console.error('Error:', error);
// 可以选择在这里继续执行或中断循环
}
}
// 处理 results 数组...
console.log(results);
}
fetchData();
选择哪种方法取决于你的具体需求:
- 如果你需要所有请求都成功才处理数据,并且希望并发执行,那么
Promise.all
或axios.all
是最佳选择。 - 如果你需要按顺序发送请求,或者需要根据前一个请求的结果决定是否发送下一个请求,那么
for...of
循环 +async/await
更合适。
希望这些信息能帮到你!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)