https://codesandbox.io/s/asyncawait-axios-practice-c060n
这是一个链接到沙箱,我有一个简单的代码。为什么它一直在返回一个承诺,而不是像我在axios调用之前所做的那样等待它的解决?
就好像它只是返回了前膜,然后就完成了。如果我在函数本地作用域中执行console.log,它将返回一个承诺对象,如果我返回结果并在全局范围内执行console.log,它将返回我正在寻找的内容。问题是,我认为我不需要这样做,等待承诺解决。我明白了,asyn会回报一个承诺,而axios也会.那么,我在处理解决承诺的承诺时,遗漏了什么呢?
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);我只想确保我对正在发生的事情的基本理解是正确的。
我得到了一个承诺,而不是预期的json。为什么?
发布于 2019-08-08 15:30:55
因为您正在调用函数,而不是等待结果。
(async () => {
const response = await GetPosts();
console.log(response);
})();没有等待,你得到的只是一个承诺。
值得注意的是,无论是在GetPosts中还是在使用catch的外部,您都应该预料到最坏的情况,并处理请求错误。
https://stackoverflow.com/questions/57416072
复制相似问题