首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么异步没有正确地等待axios的工作?

为什么异步没有正确地等待axios的工作?
EN

Stack Overflow用户
提问于 2019-08-08 15:28:01
回答 1查看 4.7K关注 0票数 5

https://codesandbox.io/s/asyncawait-axios-practice-c060n

这是一个链接到沙箱,我有一个简单的代码。为什么它一直在返回一个承诺,而不是像我在axios调用之前所做的那样等待它的解决?

就好像它只是返回了前膜,然后就完成了。如果我在函数本地作用域中执行console.log,它将返回一个承诺对象,如果我返回结果并在全局范围内执行console.log,它将返回我正在寻找的内容。问题是,我认为我不需要这样做,等待承诺解决。我明白了,asyn会回报一个承诺,而axios也会.那么,我在处理解决承诺的承诺时,遗漏了什么呢?

代码语言:javascript
运行
复制
import axios from "axios";

async function GetPosts() {
  const result = await axios.get("https://jsonplaceholder.typicode.com/posts");
  const data = await result.data;
  return data;
}

const response = GetPosts();
console.log(response);

我只想确保我对正在发生的事情的基本理解是正确的。

  • 我要导入axios
  • 我正在声明一个名为GetPosts()的函数,该函数在axios调用之前等待。(我假设它会暂停直到它完成)
  • 我在等待结果数据

我得到了一个承诺,而不是预期的json。为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-08 15:30:55

因为您正在调用函数,而不是等待结果。

代码语言:javascript
运行
复制
(async () => {
  const response = await GetPosts();
  console.log(response);
})();

没有等待,你得到的只是一个承诺。

值得注意的是,无论是在GetPosts中还是在使用catch的外部,您都应该预料到最坏的情况,并处理请求错误。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57416072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档