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

为何在action.js中调用login接口始终返回undefined?

问题解决:Action中获取Service接口响应为undefined

问题原因

你的service.js里的login函数没有返回Promise对象——虽然内部调用了instance.post()并处理了.then/.catch,但函数本身没有把这个Promise链返回,导致在action.js中调用await login(payload)时,拿到的是undefined。

修复方案

方案1:返回原Promise链

修改service.js,给instance.post()的调用加上return:

export const login = (data: ReqLogin) => {
  // 新增return,返回整个Promise链
  return instance
    .post('/auth/login/', data)
    .then((response) => ({
      status: true,
      response,
    }))
    .catch((response) => ({
      status: false,
      error: response?.data,
    }));
};

方案2:改用async/await风格(更直观)

把login改成async函数,用try/catch处理请求,代码可读性更高:

export const login = async (data: ReqLogin) => {
  try {
    const response = await instance.post('/auth/login/', data);
    return {
      status: true,
      response,
    };
  } catch (error) {
    // 注意axios错误对象的结构,error.response才包含响应数据
    return {
      status: false,
      error: error?.response?.data,
    };
  }
};

补充说明

  • 控制台输出显示result为undefined,正是因为原login函数没有返回值
  • 接口本身能正常返回响应(截图显示接口返回了正确的JSON数据),问题仅出在Promise的返回逻辑上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:15:31