为何在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
相关产品推荐
相关产品推荐

