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

如何在Axios中对同一个响应对象两次调用then方法?

解决Axios中同一个响应对象多次调用then的问题

你的问题核心在于函数a内部的.then()回调没有返回响应对象resp,导致Promise链传递的是undefined,后续a().then(...)的回调自然拿不到期望的响应对象。

只需在第一个.then()的回调里显式返回resp,就能让整个Promise链传递同一个响应对象:

function a() {
  return axios.get('/foo').then(function(resp){
    // 处理resp,比如401时触发登出逻辑
    return resp; // 关键:返回响应对象,供后续then使用
  })
}

// 调用方代码
a().then(function(resp) {
  // 现在可以正常获取同一个resp对象了
}).catch(console.log).then(clearLoadingBar)

补充说明

  • Promise的.then()方法会返回一个新的Promise,其resolved值由回调函数的返回值决定。如果回调没有返回值,默认返回undefined,后续then的回调就会接收这个undefined。
  • 如果需要在第一个then里处理异常场景(比如401),可以在处理后抛出错误交给catch处理,正常情况仍返回resp:
function a() {
  return axios.get('/foo').then(function(resp){
    if (resp.status === 401) {
      // 执行登出逻辑
      throw new Error('未授权,请重新登录');
    }
    return resp;
  })
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:25:33