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
相关产品推荐
相关产品推荐

