取消订阅Firebase实时数据库

时间:2018-06-24 16:28:10

标签: 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);

    });
}

我已经尝试过以下方法来呼叫off,但是不确定这是否正确?我已将其放在ionViewDidLeave()

firebase.database().ref('chatrooms/'+this.roomkey+'/chats').limitToLast(30).off('value');

1 个答案:

答案 0 :(得分:4)

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

要删除侦听器,请在用于调用off()的同一引用上使用on()方法。向其传递您在on()上传递的回调函数。另请阅读detatching listeners的文档。