Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase JS API:如何避免在调用/完成执行`on()`之前执行`off()`呢?_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript Firebase JS API:如何避免在调用/完成执行`on()`之前执行`off()`呢?

Javascript Firebase JS API:如何避免在调用/完成执行`on()`之前执行`off()`呢?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,在下面的代码中,off()在on()之前执行。这是因为 传递给回调的DataSnapshot将用于调用on()的位置在同步整个内容之前,它不会触发。 如文件所述: 如何构造上述代码,以便只有在内容完全同步或实际调用了on时才能调用off() 感谢在从数据库读取数据后调用关闭,将其移动到回调中: quotesRef.orderByChild('index').on('value', function(snapshot) { snapshot.forEach(function(childSn

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

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

如文件所述:

如何构造上述代码,以便只有在内容完全同步或实际调用了
on
时才能调用
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()


你为什么不想马上取消呢?如果您发现once():“这相当于在回调函数中调用on(),然后调用off()。
once
主要用于一些不会经常更改的内容,而我的代码不是这样。你能提出一些建议吗?只有在
on
完成后才会调用
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')
})
quotesRef.orderByChild('index').once('value', function(snapshot) {
    snapshot.forEach(function(childSnapShot) {
        vm.allQuotes.push({
            key: childSnapShot.key,
            quoteTxt: childSnapShot.val().quote
        })
    })
})