axios GET 请求有效,但无法将结果内容分配给变量
Posted
技术标签:
【中文标题】axios GET 请求有效,但无法将结果内容分配给变量【英文标题】:axios GET request works, but can't assign the result contents to a variable 【发布时间】:2019-03-02 19:53:32 【问题描述】:我是 javascript/React.js 方面的新手,我已经被这个奇怪的问题困扰了 5 个小时了:
我目前正在尝试从数据库中获取一些数据,每当我使用 axios 执行我的 get 请求时,它都会向我发送一个 json 文件。我可以获取数据并记录其内容,但由于某种原因,我无法将任何内容“转发”到 axios 函数之外。
这是我写的短代码,带有 2 个测试日志:
requests.js
foo()
// var declared outside of axios function
var resultSet;
axios.get(
/working/url/example/
).then((res) =>
resultSet = res.data.rows.slice();
// FIRST LOG, inside axios function
console.log(resultSet);
).catch(
error => console.log(error)
);
// SECOND LOG, outside of axios function
console.log(resultSet);
然后我得到那些奇怪的输出。不知何故,第一个日志在第二个日志之后打印:
镀铬控制台
undefined requests.js:20
(3) […, …, …] requests.js:15
第一个日志成功显示了我请求的内容,但第二个日志显示同一变量未定义。
我还是新手,所以我可能犯了一个基本错误,但我无法在其他帖子中找到任何相关案例,因为我无法找出导致此问题的原因。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我相信原因是异步请求,当你发出GET请求时,你的代码一直在执行但请求可能还没有完成,这解释了未定义,当请求完成时,你得到你的数据打印在控制台上。
【讨论】:
我刚刚用异步测试过,它可以工作!我没有考虑过这种问题(这在控制台输出以错误的顺序打印时应该很明显)。我终于可以睡觉了,非常感谢!以上是关于axios GET 请求有效,但无法将结果内容分配给变量的主要内容,如果未能解决你的问题,请参考以下文章
无法从 axios 函数之外的 axios GET 请求响应中读取值