【问题标题】:JS Why does my async function return undefined? [duplicate]JS 为什么我的异步函数返回未定义? [复制]
【发布时间】: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()
  • 你也不应该混用awaitthen:const resp = await fetch(..); const val = await resp.json(); return val[..];

标签: javascript asynchronous async-await


【解决方案1】:
  1. 要让函数返回某些内容,它必须至少具有 return 关键字。
  2. 要引用函数,使用test1,要调用函数,使用test1()() 是必需的。

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 2011-05-07
    • 2014-06-04
    相关资源
    最近更新 更多