[英]My async function is not waiting for a promise from Firebase
我目前正在学习异步的工作原理,同时使用 Firebase 数据库处理一个小项目。 据我了解 await 应该暂停 function 直到 promise 得到解决,但在我的情况下它不会等待。
我已经缩短了我用来尝试测试的 2 个函数:
async findUser(id) {
await this.firebase.findUserData(id).then(
value => {
console.log('finduser stopped waiting');
return value;
}
)
}
async findUserData(userId){
console.log('firebase started looking for user');
firebase.database().ref('/users/' + userId).once('value').then(function(snapshot){
let user = (snapshot.val());
console.log('found: ' + user);
return user;
});
}
控制台 output 看起来像这样:(还不允许嵌入图像)
它首先运行 findUser,然后是 Firebase 调用,但在返回值之前不会等待 promise 完成。 找到最后打印的用户 ID。
我确定我在这里做了一些非常愚蠢的事情,但我暂时无法弄清楚并且没有其他人可以求助。
对不起,如果问题写得不好。 第一次在这里发帖。 欢迎任何反馈!
你不应该混合await
和then
s。 然后,您也不要忘记等待 promise(您永远不会等待/返回由.once 返回的 Promise):
async findUserData(userId){
console.log('firebase started looking for user');
const snapshot = await firebase.database().ref('/users/' + userId).once('value');
let user = (snapshot.val());
console.log('found: ' + user);
return user;
}
async findUser(id) {
const value = await this.firebase.findUserData(id);
console.log('finduser stopped waiting');
return value;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.