代码之家  ›  专栏  ›  技术社区  ›  randombits

如何构造这个异步函数以获得同步响应

  •  -2
  • randombits  · 技术社区  · 4 年前

    async function getAppState() {
      return {
        appState: {
          someBar: false
        }
      },
      async function req() {
        const resp = await fetch("https://www.example.com/script.php", {
          method: 'GET',
        })
        this.appState.someBar = await resp.json();
      }
    }
    let foo = await getAppState();
    console.log(foo)
    

    我希望能够 appState console.log 就像我上面的例子一样。很明显,我所做的是行不通的。我试图表明我想逃跑 getAppState() fetch() 调用

    2 回复  |  直到 4 年前
        1
  •  1
  •   Barmar    4 年前

    getAppState() fetch() 本身。

    你需要打电话给 req() 方法 await 等待 .

    req 还需要在返回的对象中。

    function getAppState() {
      return {
        appState: {
          someBar: false
        },
        async req() {
          const resp = await fetch("https://www.example.com/script.php", {
            method: 'GET',
          })
          this.appState.someBar = await resp.json();
        }
      }
    }
    let foo = getAppState();
    await foo.req();
    console.log(foo.appState.someBar);
        2
  •  -2
  •   Mafalda Hopkirk    4 年前

    这样地:

    let foo = getAppState();
    foo.then(r=> console.log(r));
    

    除此之外,我不知道有什么别的办法可以解决你的问题。