【问题标题】:Correct way to unsubscribe on Firebase 9.0.0在 Firebase 9.0.0 上取消订阅的正确方法
【发布时间】:2021-09-23 15:10:34
【问题描述】:

在以前的版本中,我会这样做:

// Declaring db reference
let ref = firebase.database().ref('features')

// Creating the listener
let listener = ref.on('value', snapshot => { 
            
    if(snapshot.val()){
        // Reading data
    }

}

// Unsubscribing
ref.off('value', listener)

在 Firebase 9.0.0 之后,我看到 onValue() 函数返回一个取消订阅回调:

/** A callback that can invoked to remove a listener. */
export declare type Unsubscribe = () => void;

因此,我目前的做法:

// Declaring db reference
let featuresRef = ref(db, 'features')

// Creating the listener
let unsubscribe = onValue(featuresRef, snapshot => { 
            
    if(snapshot.val()){    
        // Reading data
    }
            
})

// Unsubscribing       
unsubscribe()

我在函数定义中看到off() 函数仍然存在,并且根据documentation

通过调用 Firebase 数据库引用的 off() 方法来移除回调。

是否需要使用返回的取消订阅回调函数或off() 函数来移除监听器?

【问题讨论】:

  • 返回的函数和off都可以用来移除监听器。您对其中任何一个都有问题吗?
  • 不,只是好奇这两种方法之间是否有任何区别。我会让取消订阅回调,因为它看起来更具可读性。
  • 这正是在这个重大变化中引入它的原因。我们都更喜欢新模式,但不想完全删除旧的比喻。我会写一个快速的答案来结束。

标签: firebase firebase-realtime-database


【解决方案1】:

firebaser 在这里

返回的函数和off都可以用来移除监听器。没有功能差异,即使在底层,它们在新 SDK 中也基本相同。

off() 取消订阅样式自 Firebase 实时数据库 SDK 的第一个版本开始就提供。在某个地方,较新的 Firebase 产品开始返回取消订阅功能,许多开发人员似乎更喜欢这个功能,因此我们在 v9 SDK 中添加了这种取消订阅样式。但off 仍然可用,并且功能相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2021-01-28
    • 2017-12-06
    • 2017-02-12
    相关资源
    最近更新 更多