Node.js中Axios请求响应数据提取失败求助
解决Axios异步请求后无法获取数据的问题
你的问题核心是异步操作的执行顺序问题:Axios的HTTP请求是异步任务,.then()里的回调函数要等请求完成后才会执行,但你在外部的console.log(result)会在请求还没返回结果时就先运行,此时result还是初始的空数组,所以输出[]。
下面是两种可行的解决方法:
方法1:将逻辑放在.then()回调内部
把所有需要用到result的代码都移到.then()的回调里,确保只有在请求成功拿到数据后才执行这些逻辑:
let config = { method: 'get', maxBodyLength: Infinity, url: urlToSend, headers: { 'Authorization': 'Bearer ' + token, } }; axios.request(config) .then((response) => { const result = response.data; console.log(result); // 在这里可以正常获取数据 // 其他需要使用result的业务逻辑也写在这里 }) .catch((error) => { console.log(error); });
方法2:使用async/await语法(更简洁)
用async/await把异步代码写成同步风格,需要注意await必须放在async声明的函数内部:
async function fetchData() { const config = { method: 'get', maxBodyLength: Infinity, url: urlToSend, headers: { 'Authorization': 'Bearer ' + token, } }; try { const response = await axios.request(config); const result = response.data; console.log(result); // 在这里正常获取数据 } catch (error) { console.log(error); } } // 调用这个异步函数 fetchData();
内容的提问来源于stack exchange,提问作者Carlos Pulgarin
相关产品推荐
相关产品推荐

