📅  最后修改于: 2023-12-03 15:24:07.285000             🧑  作者: Mango
在开发过程中,我们有时需要在 axios 中同时请求多个接口,每个接口都返回一个 Promise。而此时,我们又希望将多个Promise的结果合并在一起并进行统一处理。在这篇文章中,将介绍如何在axios中返回多个Promise。
Promise.all() 是 ES2015 (ES6) 中的 Promise 异步处理方法之一。它接收一个包含多个 Promise 的数组作为参数,并且只有在数组中的所有Promise都成功执行后才会返回一个成功状态。
代码演示:
const axios = require('axios');
const getUsers = axios.get('/users');
const getPosts = axios.get('/posts');
const getComments = axios.get('/comments');
Promise.all([getUsers, getPosts, getComments]).then((results) => {
const [users, posts, comments] = results;
console.log(users.data);
console.log(posts.data);
console.log(comments.data);
}).catch((error) => {
console.log(error);
})
async/await 是 ES2017 中的异步方案,它可以让异步处理更简单。我们可以使用 async/await 语法来获取 axios 返回的 Promise。
代码演示:
const axios = require('axios');
async function fetchData() {
try {
const users = await axios.get('/users');
const posts = await axios.get('/posts');
const comments = await axios.get('/comments');
console.log(users.data);
console.log(posts.data);
console.log(comments.data);
} catch (error) {
console.log(error);
}
}
fetchData();
Promise.race() 是 ES2015 (ES6) 中的 Promise 异步处理方法之一。它接收一个包含多个 Promise 的数组作为参数,并且只要有一个 Promise 成功执行就会返回一个成功状态。 Promise.race() 方法使用场景较少,一般用于竞争异步任务。
代码演示:
const axios = require('axios');
const getUsers = axios.get('/users');
const getPosts = axios.get('/posts');
const getComments = axios.get('/comments');
Promise.race([getUsers, getPosts, getComments]).then((result) => {
console.log(result.data);
}).catch((error) => {
console.log(error);
})
以上是在 axios 中返回多个 Promise 的方法。使用 Promise.all() 可以等待所有的Promise结束,使用 async/await 可以让异步处理更简单,使用Promise.race() 可以等待其中一个 Promise结束。结合实际应用场景选择使用。