Javascript 我的函数调用不返回值
这是我的代码,我将在控制台中打印值,但它不会返回该值Javascript 我的函数调用不返回值,javascript,google-cloud-firestore,return,Javascript,Google Cloud Firestore,Return,这是我的代码,我将在控制台中打印值,但它不会返回该值 async function fetchData(uid) { return firebase.firestore().collection('users_info') .where("uid","==",uid).get() .then( async function(querySnapshot) {
async function fetchData(uid) {
return firebase.firestore().collection('users_info')
.where("uid","==",uid).get()
.then( async function(querySnapshot) {
var usr;
querySnapshot.forEach(async function(doc) {
usr = await doc.data().name;
console.log(usr);
return usr;
});
});
}
因为您使用的是forEach,所以我假设您处理的数据项不止一个。在这种情况下,最好将它们全部放入一个数组并返回该数组。 我对下面的代码片段添加了一点修改。我认为这应该能奏效
async function fetchData(uid) {
return firebase.firestore()
.collection('users_info')
.where("uid", "==", uid)
.get()
.then(async function(querySnapshot) {
var usr = [];
querySnapshot.forEach(async function(doc) {
const temp = await doc.data().name);
usr.push(await doc.data().name))
});
return usr;
})
}
有两件事——首先,如果函数本身正在进行异步工作,并且需要自己的回调继续进行,则需要返回一个承诺。看
此外,foreach不一定用于返回转换后的值的集合,这似乎是您在那里尝试做的事情。如果可以的话,我会用map替换它。promise回调函数中的return只返回回调,而不返回fetchData。forEach通常会忽略回调的返回值。如果要将函数声明为async,则无需对其中的承诺使用then。这就是等待的目的。它正在工作,需要修复一些小的语法错误。