我使用async / await函数已经有几个月了,并且我所有的代码都可以使用,但是,我不完全理解它,可以使用一些智慧的话。
在下面的代码中,我有一个异步函数,我的问题是...为什么它返回承诺而不是我期望的值?更重要的是,获得我想要的价值的正确方法是什么?
getName = async () => {
const request = await fetch(apiUrl)
const data = await request.json()
return data.response.name
}
我稍后调用该函数
const name = getName()
但是name
是一个诺言,而不是名称。
我已经看了很多遍了,而且它永远不会消失。我希望使用我自己的示例,如果有人可以向我解释它,以便我完全理解,它最终会坚持下去。
EDIT -为回复@Paulpro,我已将问题更新至下面...
假设异步功能还可以,问题是如何存储该值。
const name = getName()
'name'现在是一个承诺,所以我通常会做这样的事情...
getName().then(name => setName(name))
但是如何使const name ===返回的名称?
答案 0 :(得分:2)
如何使const名称===返回的名称?
使用if (count($studentLocations->intersect($preceptorLocations))>0) {
//Your code here
}
。
这意味着您必须在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