我正在固定时间更新Firebase-实时数据库中每个用户的所有数据,并且正在使用:
this.db.list('/' + this.user.uid + '/data).valueChanges()
.subscribe(items=>{
console.log(items)
});
检索更新。但是由于多个值被更新(即使一次全部更新),因此我在Web应用程序中一次收到一个更新。 这正常吗?有什么办法可以全部更新并只接收一次更新?
答案 0 :(得分:1)
如果您在某个侦听器所在的位置进行多个独立的更新,则该侦听器可能会触发与更新相同的次数。该系统将尝试尽可能快地同步所有更改。您无法更改此行为。如果您只希望进行一次更新,则应该只在该位置进行一次更改。
答案 1 :(得分:0)
如果您真的不喜欢多重发射,可以在订阅之前尝试一些RxJS运算符。
this.db.list('/' + this.user.uid + '/data).valueChanges().pipe(
buffer(interval(1000))
)
.subscribe(items=>{
console.log(items);
});
例如,这将在一秒跨度内发出一个值数组。
如果有一种方法可以在 更新时进行监听(或者更确切地说,从服务器确认更新成功),则可以监听,然后仅获取{{ 1}},而不是每个值都会随之改变。