任何人都可以帮助分析这段代码在实时分布在许多人身上的效果如何吗? 我希望所有用户都能够更新实时图表并向其发送值。
每个客户端都有一个本地计数器变量:
var count = 0;
发送一个值:
$('#addValue').click(function(){
fbValues.push({ x: count, y: randomNum(30,60)});
});
监听要添加到 firebase 的 Child:
fbValues.on("child_added", function(snapshot) {
count += 1;
var x_coor = snapshot.val().x;
var y_coor = snapshot.val().y;
data.values.push({ x: x_coor, y: y_coor });
updateGraph();
});
问题可能出在计数的局部变量上,目前该图适用于大多数用例,但当很多人开始发送数据时,有时计数会乱序
我查找了 firebase 的交易,我可以保持 firebase 的总数
计数准确,但我看不出这将如何帮助客户正确地增加他们的计数器。
最佳答案
客户可以调用transaction直接方法。
var fb = new Firebase(URL);
var counterRef = fb.child('counter');
var valsRef = fb.child('values');
$('#addValue').click(function(){
counterRef.transaction(function(currentVal) {
return (currentVal||0)+1;
},
function(err, success, snap) {
fbValues.push({ x: snap.val(), y: randomNum(30,60)});
});
});
在本地,只监听计数器路径的变化:
var counter = 0;
counterRef.on('value', function(snap) {
counter = snap.val() || 0;
});
关于javascript - Firebase:如何获取和设置全局索引计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22312560/