【问题标题】:Why I am getting error when calling the api using axios?为什么我在使用 axios 调用 api 时出现错误?
【发布时间】:2021-07-20 18:59:20
【问题描述】:

我想调用 api 并使用 api 结果进行进一步计算但不能这样做。即使在使用 async/await 之后。我将控制台值设置为未定义。我也尝试使用承诺,但我不知道如何赋予它授权属性。 我对 js 很幼稚,有没有人可以帮忙解决我哪里出错了?

var plan;
async function makeRequest() {

   const config = {
  "url": "https://jsonplaceholder.typicode.com/posts/1",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "[Auth_url]"
  },
};
    let res = await axios(config)

    console.log(res);
    plan = res;
}

makeRequest();
console.log("plan",plan)
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

【问题讨论】:

  • 错误是什么?
  • 告诉我们你的错误
  • 这甚至不是异步调用的问题,你只是在调用你的函数之前记录了一个未声明的变量。如果您之后登录(最好也声明您的变量 - 由于同样的原因,分配全局变量的非严格巫术还不会发生),请参阅how-do-i-return-the-response-from-an-asynchronous-call
  • 参考我上面链接的帖子,它现在是它的直接副本。
  • 需要一些转帐,是的。对于您的具体情况,它不是可复制的代码。一般的问题是,您需要接受什么(异步调用尚未完成,当您调用console.log 时,尚未分配plan,以及如何处理)。这与细节无关,异步调用是$.ajax,还是fetch,还是makeRequest,或者其他什么。

标签: javascript api axios fetch


【解决方案1】:

你可以试试这个方法

您可以在标题部分传递令牌详细信息

var plan= [];
 function makeRequest() {
    axios.get('https://jsonplaceholder.typicode.com/posts/1',      {
  headers: {
    /* 'Authorization': '',*/
  }})
    .then((res) => {
   
    plan = res.data;
    console.log(plan);
    });
}
makeRequest();
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

您可以在您提供的示例 sn-p 集合中尝试这种方法。

var plan;
async function makeRequest() {
   const config = {
  "url": "https://jsonplaceholder.typicode.com/posts/1",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "[Auth_url]"
  },
};
    let res = await axios(config)
    plan = res.data;
}

makeRequest().then(result => {
console.log("plan",plan)
});
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

【讨论】:

  • 谢谢,但问题还是一样,控制台未定义,我希望在计划变量中获得 api 响应。
  • 您:1)根本没有解决核心问题(而是您只是在编辑中删除了console.log),2)更改为.then,这是绝对没有必要的,在里面原始代码和 3) 保留了 await,现在在同一个函数中与 then 样式混合,但我退出了,我在同一主题的第 10000 次重复上花了太多时间。无论如何,人们都支持他们想要的任何东西。
  • 虽然感谢您的帮助@ASDFGerte。将尝试再次通过该链接
  • @Nidhi,我已经更新了你的方法的答案,这是否澄清了你的疑问?
猜你喜欢
  • 2019-10-12
  • 2020-06-17
  • 2020-05-15
  • 2022-10-04
  • 2021-08-18
  • 1970-01-01
  • 2021-01-06
  • 2015-04-25
  • 2021-07-02
相关资源
最近更新 更多