https://codesandbox.io/s/asyncawait-axios-practice-c060n
这是到我具有简单代码的沙箱的链接。为什么它会一直返回承诺,而不是等到axios调用之前我等待时才完成解决?
就好像它只是返回承诺而已。如果在函数本地作用域内执行console.log,它将返回一个promise对象;如果我返回结果并在全局作用域中执行一个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。为什么?
答案 0 :(得分:2)
因为您正在调用该函数,但不等待结果。
(async () => {
const response = await GetPosts();
console.log(response);
})();
不用等待,您所收到的只是承诺。
值得注意的是,您应该始终预料到最糟糕的情况,并使用catch
在GetPosts中或外部处理请求错误。