当我在同一个位置有多个侦听器时,所有侦听器都会访问相同的本地缓存,还是每个侦听器都有自己的缓存“副本”?当我使用.off()
删除其中一个侦听器时,缓存会发生什么?是否会通过其他侦听器删除并重新填充本地缓存(因为它们仍会侦听更改)?
我的理解是所有侦听器都使用位置的相同本地缓存,但是当我使用.off()
时,只有侦听器及其代码被删除,但数据仍保留在内存中。
var applyUpdate1 = function(snap) {
//...
};
var applyUpdate2 = function(snap) {
//...
};
// Both sync data from the same location
var testRef1 = firebase.database().ref('test').on('value', applyUpdate1);
var testRef2 = firebase.database().ref('test').on('value', applyUpdate2);
// Will this delete the local memory?
// If so, what happens to testRef2, since it's using this local memory?
testRef1.off('value', applyUpdate1);
我也修改了我对它的理解。我的假设是否正确?
答案 0 :(得分:2)
如果多个侦听器正在观察相同的位置,则数据仅从服务器读取/同步一次,并且仅保留在内存中一次。
只要某个位置上有任何活动侦听器,该位置的数据就会保留在内存中。删除位置的最后一个活动侦听器后,将立即从内存中清除该位置的数据。