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 请求响应中读取值

Axios 对 Opensearch/Elasticsearch 的请求

GET 请求在邮递员中有效,但在 Axios 中失败

如何在 ExpressJS 中使用 axios?

无法使用 axios 和 ReactJS 执行获取请求

使用 Python 请求获取 HEAD 内容