如何从async / await函数正确返回结果?

问题描述 投票:1回答:1

我已经使用async / await函数几个月了,我已经完成了所有代码的工作,但是,我完全不理解它,可以用一些智慧的话。

在我下面的代码中,我有一个异步函数,我的问题是......为什么它会返回一个promise而不是我期望的值?更重要的是,获得我想要的价值的正确方法是什么?

  getName = async () => {
    const request = await fetch(apiUrl)
    const data = await request.json()

    return data.response.name
  }

我稍后调用该函数

const name = getName()

但是name是一个承诺而不是名字。

我多次看了这个,它永远不会坚持下去。我希望使用我自己的例子,如果有人可以向我解释,所以我完全理解它最终会坚持我。

编辑 - 为了回应@Paulpro我已将我的问题更新到下面......

假设异步函数没问题,问题是,如何存储值。

const name = getName()

'name'现在是一个承诺,所以我通常做这样的事......

getName().then(name => setName(name))

但我如何使const名称===返回的名称?

javascript reactjs async-await
1个回答
2
投票

如何使const name ===返回的名字?

通过使用const name = await getName()

这意味着你必须在async函数中使用它。

所以你的方法使用:

getName().then(name => setName(name))

很可能是最好的方法,但它实际上取决于你的其余代码。

我的意思是你可以这样做:

let name;

getName = async () => {
  const request = await fetch(apiUrl)
  const data = await request.json()

  name = data.response.name;
}

当(如果)两个异步请求完成时,您的name变量将具有结果。但是不能保证时机。根据应用程序的不同,如果您初始化变量可能会很好:

let name = 'Loading...';
© www.soinside.com 2019 - 2024. All rights reserved.