San*_*il9 5 javascript ecmascript-6 axios
https://codesandbox.io/s/asyncawait-axios-practice-c060n
这是我拥有的带有简单代码的沙箱的链接。为什么它不断返回承诺而不等到它完成解析,因为我在 axios 调用之前放置了 wait ?
就好像它只是返回承诺并且完成了。如果我在函数本地范围内执行 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);
Run Code Online (Sandbox Code Playgroud)
我只是想确保我对正在发生的事情的基本理解是正确的。
我收到了一个承诺,而不是预期的 json。为什么?
因为您正在调用该函数但不等待结果。
(async () => {
const response = await GetPosts();
console.log(response);
})();
Run Code Online (Sandbox Code Playgroud)
无需等待,您收到的只是一个 Promise。
值得注意的是,您应该始终做好最坏的打算,并在 GetPosts 中或在 GetPosts 外部使用catch
.