调用API后console.log返回undefined但网络有数据的问题求助
解决API响应打印undefined的问题
你的问题出在getUsers函数没有返回API请求的结果。async函数如果没有显式return值,默认会返回undefined,哪怕网络请求已经成功拿到数据,也不会自动把数据传递给调用方。
修改方法:
在getUsers的try块里,把axios请求的结果return出去:
export const getUsers = async() => { try { // 返回请求的响应结果 return await axios.get(`${URL}/all`) } catch (error) { console.log("Error while calling getUsers API", error); // 可选:抛出错误让调用方处理,避免调用者拿到undefined却不知道出错 throw error; } }
调用时建议加上错误捕获(避免请求失败时出现未处理的Promise报错):
const getAllUsers = async () => { try { let response = await getUsers(); console.log(response); } catch (err) { console.log("获取用户列表失败", err); } }
原理说明:
async函数本质上返回一个Promise对象。当函数内部没有return任何值时,这个Promise最终会resolve为undefined。你之前的代码里,虽然axios请求成功拿到了数据,但没有把数据作为函数返回值传递出去,所以getAllUsers里的response自然就是undefined。
另外,也可以直接return axios请求(不用await),因为axios.get本身返回的就是Promise,async函数会自动处理:
export const getUsers = async() => { try { return axios.get(`${URL}/all`) } catch (error) { console.log("Error while calling getUsers API", error); throw error; } }
内容的提问来源于stack exchange,提问作者Ashley Ferns
相关产品推荐
相关产品推荐

