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

如何在多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("所有时段已成功提交。");
    }
  });

修改说明

  1. 状态统一判断:使用Array.some()检查是否存在失败请求,Array.every()确认是否全部成功,避免逐个遍历触发重复提示。
  2. 移除冗余catch:Promise.allSettled不会触发reject状态,因此原代码中的catch分支无实际作用,直接删除即可。
  3. 优化提示逻辑:将原本的多次成功/失败提示,改为基于整体结果的单次提示,避免频繁弹窗干扰用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:51:02