【问题标题】:Unsubscribing from Firebase Realtime Database退订 Firebase 实时数据库
【发布时间】:2018-06-25 00:45:49
【问题描述】:

我的 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');

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

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

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

    【讨论】:

    • 道格,非常感谢您的回复。我已经编辑了我的问题,这是你的建议吗?基本上复制用于on的代码但将on替换为off?
    • 你不再需要监听器了,只需要off('value')
    • 谢谢 - 刚刚再次编辑了问题。像这样?
    • 不,“具有相同的回调函数”又名 off("value", someCB)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2021-07-01
    • 1970-01-01
    • 2017-06-03
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多