You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React中使用axios批量发送请求并等待全部执行完成

React + Axios 批量等待多请求完成的实现方法

Axios 发起的所有请求默认返回标准 Promise 实例,你可以直接使用 JavaScript 内置的批量 Promise 处理方法实现需求,以下是具体实现方案:

基础实现(所有请求都成功才执行后续逻辑)

使用Promise.all,它接收一个Promise数组作为参数,只有数组内所有Promise都resolve之后,才会返回结果数组,顺序和传入的请求顺序完全对应:

import { useEffect } from 'react';
import axios from 'axios';

const YourPage = () => {
  useEffect(() => {
    // 把三个请求包装成Promise数组
    const requestQueue = [
      axios.get('/posts'),
      axios.get('/users'),
      axios.get('/friends')
    ];

    // 写法1:async/await 写法(更易读)
    const fetchAllData = async () => {
      try {
        // 结果顺序和请求传入顺序一一对应
        const [postsRes, usersRes, friendsRes] = await Promise.all(requestQueue);
        // 后续逻辑,比如赋值给state
        console.log('帖子数据:', postsRes.data);
        console.log('用户数据:', usersRes.data);
        console.log('好友数据:', friendsRes.data);
        // 你要执行的后续操作写在这里
      } catch (err) {
        // 任意一个请求失败都会进入这里的错误捕获
        console.error('某一个请求出错了:', err);
      }
    };

    fetchAllData();

    // 写法2:.then链式调用写法
    // Promise.all(requestQueue)
    //   .then(([postsRes, usersRes, friendsRes]) => {
    //     // 后续操作
    //   })
    //   .catch(err => {
    //     // 错误处理
    //   })
  }, []);

  // 其余页面逻辑...
}

特殊场景:允许部分请求失败,依然等所有请求结束再执行后续逻辑

如果你不需要所有请求都成功,哪怕某个接口报错,也要等三个请求都结束再执行后续操作,可以用Promise.allSettled替换Promise.all,它会返回每个请求的执行状态(成功/失败)和对应结果:

const fetchAllData = async () => {
  const results = await Promise.allSettled(requestQueue);
  // 遍历结果,分别处理成功和失败的请求
  results.forEach((result, index) => {
    if (result.status === 'fulfilled') {
      console.log(`请求${index+1}成功,数据:`, result.value.data);
    } else {
      console.log(`请求${index+1}失败,错误:`, result.reason);
    }
  })
  // 所有请求都处理完之后的后续逻辑写在这里
};

注意事项

  • 两种批量处理方法都不会阻塞请求并发,三个请求是同时发起的,不会按顺序逐个发送
  • 如果你需要按顺序发起请求(前一个请求结束再发下一个),单独写串行逻辑即可

内容的提问来源于stack exchange,提问作者trickysneak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:06:02