我正在尝试更新firebase中的多个值,但我在下面的代码中遇到了一个小问题。 我的应用程序在第一次单击更新按钮时工作正常。 但是当我再次点击更新按钮时,我不知道为什么应用程序卡住了。
public list1: FirebaseListObservable<any[]>;
public list2: FirebaseListObservable<any[]>;
...
...
function(id,title,desc){
this.list1.subscribe(dataX => {
dataX.forEach(L1=> {
if(L1.nID==id){
this.list1.update(L1.$key, {
title: title,
desc: desc
})
}
})
})
}
答案 0 :(得分:0)
看起来您正在订阅自我更新的数据,导致奇怪的循环/锁定。
this.list1.subscribe(
将订阅list1中的每个更改,因此如果list1中有更新,则会触发此功能。
简而言之:
this.list1.update(
会更新list1,它会触发this.list1.subscribe(
,触发this.list1.update(
会触发this.list1.subscribe(
,依此类推......
要解决此问题,您可以使用mohamad rabee在评论中所说的内容并使用this.list1.take(1).subscribe(...)
但是如果这不是预期的行为,并且您想要订阅list1的所有更新,那么请考虑从订阅中删除更新功能。
希望这会以某种方式帮助你,
此致