如何在多axios请求的Promise.allSettled流程中返回单个错误提示?
修改方案
要实现“任意一个对象提交失败时仅显示单个错误提示”,核心思路是先统一判断所有请求的结果状态,再根据整体情况触发提示,而非逐个处理每个请求结果。
修改后的提交函数代码
const promises = plan.map((obj) => { return dispatch(addSlot(obj)); }); Promise.allSettled(promises) .then((results) => { // 检查是否存在提交失败的请求 const hasFailed = results.some(result => result.value.meta.requestStatus === "rejected" ); // 检查是否所有请求都成功 const allSucceeded = results.every(result => result.value.meta.requestStatus === "fulfilled" ); if (hasFailed) { // 仅显示一次错误提示 toast.error("部分时段提交失败,请检查输入参数后重试。"); } else if (allSucceeded) { // 所有请求成功时显示一次成功提示 toast.success("所有时段已成功提交。"); } });
修改说明
- 状态统一判断:使用
Array.some()检查是否存在失败请求,Array.every()确认是否全部成功,避免逐个遍历触发重复提示。 - 移除冗余catch:
Promise.allSettled不会触发reject状态,因此原代码中的catch分支无实际作用,直接删除即可。 - 优化提示逻辑:将原本的多次成功/失败提示,改为基于整体结果的单次提示,避免频繁弹窗干扰用户。
内容的提问来源于stack exchange,提问作者Frank HAWK
相关产品推荐
相关产品推荐

