【问题标题】:How do you await data from firebase?您如何等待来自 firebase 的数据?
【发布时间】:2022-08-23 08:13:56
【问题描述】:
我想在 angularfire 中调用我的下一个函数之前等待数据返回。
这是我当前的代码...我想替换 settimeout ...我知道这不是最好的方法。
function(){
this.db.collection(\'myCollection\').doc(\'myDoc\').valueChanges().subscribe(res => {
this.myData = res
})
setTimeout(() => {
this.myFunction(this.myData)
}, 1500);
}
标签:
typescript
angularfire2
【解决方案1】:
await 在这里没有意义。
await 是一个管理 Promise 的工具。反过来,Promise 是等待某事发生一次的工具。
valueChanges 发生每次值会改变,而不仅仅是一次。
如果你将它包装在一个 Promise 中,那么它会在第一次更改值时起作用,但在下次更改时会失败。
您应该use get instead 或在订阅函数中完成工作,以便在每次值更改时完成。
【解决方案2】:
这应该可以解决问题
const myData = (
await this.db.collection('myCollection').doc('myDoc').get().toPromise()
).data()