Angular 2 - 当我想在Ionic 2中更新firebase数据时,我的应用程序停滞不前

时间:2017-08-01 21:12:47

标签: angular firebase ionic2

我正在尝试更新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
         })
       }
    })
  })
}

1 个答案:

答案 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的所有更新,那么请考虑从订阅中删除更新功能。

希望这会以某种方式帮助你,

此致