我正在尝试更新火力库中的多个值,但在下面的代码中遇到了小问题。 我的应用程序在第一次单击更新按钮时工作正常。 但是当我再次单击更新按钮时,我不知道为什么应用程序卡住了。
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
})
}
})
})
}
看起来您正在订阅自我更新的数据,从而导致奇怪的循环/锁定。
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 的所有更新,请考虑从订阅中删除更新函数。
希望这在某种程度上对您有所帮助,
问候