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

React中使用Promise.all调用多API并实现差异化错误处理

React中实现多API差异化错误处理的方案

核心思路

  • 给每个API请求的Promise单独绑定专属错误处理逻辑,确保某个API失败时立刻执行自身的错误处理,不阻塞其他API
  • 使用Promise.all并行执行所有请求,保证效率,同时即使部分请求失败,其余请求仍会正常完成

实现代码

// 定义API 1的请求及错误处理
const requestApi1 = fetch(api1)
  .then(res => res.json())
  .catch(err => {
    // API 1专属错误处理逻辑
    console.error("API 1请求失败:", err);
    // 返回错误标识,避免Promise.all整体中断
    return { error: true, source: "api1", message: err.message };
  });

// 定义API 2的请求及错误处理
const requestApi2 = fetch(api2)
  .then(res => res.json())
  .catch(err => {
    // API 2专属错误处理逻辑
    console.error("API 2请求失败:", err);
    return { error: true, source: "api2", message: err.message };
  });

// 并行执行所有请求
Promise.all([requestApi1, requestApi2])
  .then(results => {
    const [api1Result, api2Result] = results;
    // 处理API 1的成功结果
    if (!api1Result.error) {
      console.log("API 1返回数据:", api1Result);
      // 这里可以添加React状态更新等业务逻辑
    }
    // 处理API 2的成功结果
    if (!api2Result.error) {
      console.log("API 2返回数据:", api2Result);
      // 这里可以添加React状态更新等业务逻辑
    }
  });

关键点说明

  • 即时错误处理:每个请求的catch会在自身失败时立刻触发,不需要等待其他API请求完成,满足"尽快执行对应错误处理"的需求
  • 无中断执行:每个catch中返回错误标识而非抛出错误,确保Promise.all不会因为单个请求失败而终止,其余API请求仍能正常完成
  • 并行执行效率:Promise.all会同时发起所有API请求,最大化节省时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:40:43