退订 Firebase 实时数据库

Chr*_*ris 4 javascript firebase firebase-realtime-database

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

我怀疑这是因为我应该在关闭模式窗口时取消订阅 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);

    });
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下调用,off但不确定这是否是正确的方法?我把这个放在里面ionViewDidLeave()

firebase.database().ref('chatrooms/'+this.roomkey+'/chats').limitToLast(30).off('value');
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 8

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

要删除侦听器,请您用来调用on()的同一引用上使用off()方法。将您传递给 on() 的回调函数传递给它。另请阅读有关分离侦听器的文档。