Firebase JS API:如何避免在调用/完成执行之前执行“off()”



在下面的代码中,off()on()之前执行。发生这种情况是因为

传递给回调的 DataSnapshot 将用于调用 on(( 的位置。在同步整个内容之前,它不会触发。

如文档中所述:https://firebase.google.com/docs/reference/js/firebase.database.Reference#on

quotesRef.orderByChild('index').on('value', function(snapshot) {
    snapshot.forEach(function(childSnapShot) {
        vm.allQuotes.push({
            key: childSnapShot.key,
            quoteTxt: childSnapShot.val().quote
        })
    })
})
quotesRef.off('value')

如何构建上述代码,以便仅在内容完全同步或实际调用on时调用off()

谢谢

要在从数据库中读取数据后调用off,请将其移动到回调中:

quotesRef.orderByChild('index').on('value', function(snapshot) {
    snapshot.forEach(function(childSnapShot) {
        vm.allQuotes.push({
            key: childSnapShot.key,
            quoteTxt: childSnapShot.val().quote
        })
    })
    quotesRef.off('value')
})

但正如安德烈评论的那样,这完全等同于使用 once()

quotesRef.orderByChild('index').once('value', function(snapshot) {
    snapshot.forEach(function(childSnapShot) {
        vm.allQuotes.push({
            key: childSnapShot.key,
            quoteTxt: childSnapShot.val().quote
        })
    })
})

最新更新