async函数中await获取axios返回值为undefined如何解决?
问题原因
你的问题既不是await也不是async的语法错误,核心问题是getPageData函数没有返回Promise对象,导致await拿到的是undefined:
- 你在
getPageData里调用了axios.get,但没有把这个axios返回的Promise return出去,函数执行完默认返回undefined,await等待undefined自然拿不到结果 - 虽然你在
.then()回调里return了result,但这个return属于回调函数的返回值,不是外层getPageData的返回值,不会被外层接收到
解决方法
方案1:直接返回axios请求的Promise
修改getPageData函数,在axios.get前面加return即可:
async function getPageData(page_num){ let pageNum = page_num; console.log("page_num" , pageNum); let path = "https://......" // 新增return,把axios的Promise返回给调用方 return axios.get(path).then( (response) => { var result = response.data; console.log(result); return result; }, (error) => { console.log(error); // 错误场景建议抛出,方便外层try catch捕获 throw error } ); }
方案2:统一使用async/await语法,避免混合.then回调风格
代码可读性更高,更易维护:
async function getPageData(page_num){ let pageNum = page_num; console.log("page_num" , pageNum); let path = "https://......" try { const response = await axios.get(path) const result = response.data console.log(result) return result } catch (error) { console.log(error) throw error } }
两种方案修改后,外层的await getPageData(1)就能正常拿到返回的响应结果。
内容的提问来源于stack exchange,提问作者MaheemaPavithrani
相关产品推荐
相关产品推荐

