代码之家  ›  专栏  ›  技术社区  ›  Chris

从firebase实时数据库取消订阅

  •  2
  • Chris  · 技术社区  · 6 年前

    我的爱奥尼亚应用程序中有一个聊天系统,显示在一个模式窗口中。在模式窗口中,我有下面的代码。似乎在使用了一段时间后,它变得有点迟钝。

    我怀疑这是因为当我关闭模式窗口时,我应该从firebase取消订阅。换句话说,每次我单击按钮打开模式时,似乎都有一个新的订阅。是这样吗?如果是,我该怎么办?我在文档中看不到退订选项?

    ionViewDidLoad() {
        firebase.database().ref('chatrooms/'+this.roomkey+'/chats').limitToLast(30).on('value', resp => {
    
            this.chats = [];
            this.chats = snapshotToArray(resp);
            this.content.scrollTo(0, 999999, 200);
    
        });
    }
    

    我试着打电话给 off 但不确定这是否是正确的方法?我把这个放进去了 ionViewDidLeave()

    firebase.database().ref('chatrooms/'+this.roomkey+'/chats').limitToLast(30).off('value');
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Doug Stevenson    6 年前

    当不再需要数据库引用上的任何侦听器时,应始终删除该侦听器。否则,该侦听器将在数据更改时继续接收快照。

    要删除侦听器,请使用 off() 方法与您过去调用的相同引用 on() . 将传递给它的回调函数()传递给它。也请阅读文档 detatching listeners .