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
})
})
})