【发布时间】:2021-10-21 12:47:56
【问题描述】:
我开始理解 async / await 但我还没有弄明白。我真的希望你能帮助我!
async function test1() {
const fetchPromise = await fetch("https://www.instagram.com/boarirkeerd/?__a=1", {})
.then(response => response.json())
.then(response => {
console.log(response["graphql"]['user']['id']); /* returns 43000480694 */
return response["graphql"]['user']['id']; /* returns undefined */
});};
if (await test1 == "43000480694") {console.log("YES");}
else {console.log('NO');} /* returns NO */
test1(); /* undefined */
JS 控制台显示: 不 承诺 43000480694
为什么是这个顺序,为什么函数返回未定义? 它应该是: 是的 承诺 43000480694
非常感谢您的帮助!
【问题讨论】:
-
因为
test1没有返回任何内容。你从 promise 回调中return,然后等待的值在fetchPromise中。但是你不会从test1返回那个。 -
尝试将
await test1更改为await test1() -
你也不应该混用
await和then:const resp = await fetch(..); const val = await resp.json(); return val[..];。
标签: javascript asynchronous async-await