gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:03:35 27 4
gpt4 key购买 nike

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

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

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

return data.response.name
}

我稍后调用该函数

const name = getName()

但是 name 是一个 promise 而不是名字。

我已经查了很多次了,但一直没有坚持下来。如果有人可以向我解释,我希望使用我自己的示例,以便我完全理解它最终会坚持下去。

编辑 - 作为对@Paulpro 的回应,我已将我的问题更新为以下...

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

const name = getName()

'name' 现在是一个 promise ,所以我通常会做这样的事情......

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

但是如何使 const name === 返回的名称呢?

最佳答案

how do I make const name === the returned 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...';

关于javascript - 如何从 async/await 函数正确返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55876386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com