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

Promise.allSettled为何将apiRequest内catch的错误判定为fulfilled状态

问题原因

  • 你在apiRequest的catch捕获块中直接使用return返回错误提示字符串。对于async函数来说,只要执行了正常的return操作,无论返回的内容是成功结果还是错误描述,函数返回的Promise实例状态都会被标记为fulfilled,相当于你主动吞掉了请求错误,自然Promise.allSettled无法识别到rejected状态的请求。

修复方案

只需修改apiRequest的catch块逻辑,不要返回错误信息,改为抛出错误即可,修改后的代码如下:

async function apiRequest(url, index) {
  try {
    const { data } = await axios('https://api-end-point')
    return 'All good' + url
  } catch (error) {
    const status = error.response?.status ?? 'No response'
    // 抛出错误使Promise状态变为rejected
    throw new Error(`Error: ${status}, ${url}`)
  }
}

如果业务需要保留原错误对象的额外信息,也可以直接抛出原error,或者将自定义错误信息与原error合并后抛出,不影响Promise.allSettled对rejected状态的识别。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:12:03