我已经使用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名称===返回的名称?
如何使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...';