Firebase:如何获取和设置全局索引计数器
Firebase: how to get and set a global index counter?
谁能帮我分析一下这段代码是如何实时地分布在很多人身上的?我希望所有的用户都能够更新一个实时图形,并发送值给它。
每个客户端都有一个本地计数器变量:
var count = 0;
发送值:
$('#addValue').click(function(){
fbValues.push({ x: count, y: randomNum(30,60)});
});
监听要添加到firebase的子节点:
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();
});
问题可能与count的局部变量有关,目前图在大多数用例中工作得很好,但是当很多人开始发送数据时,计数有时会变得无序
我查找了firebase的事务,我可以保持firebase上的total
计数准确,但我不知道这将如何帮助客户端正确地增加计数器。
客户端可以直接调用事务方法。
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函数中设置全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 在javascript函数的循环中设置全局布尔变量的最佳语法
- 使用eval()设置全局变量
- 如何在另一个函数调用中设置全局数组值
- 在express.js中为每个请求设置全局res.local变量
- Ajax设置全局变量,但外部值消失
- 更新后,父视图未在 Electron 中的
上设置全局变量 - 在函数内设置全局变量值&if语句
- 为什么在定义回调/侦听器函数(异步消息传递,port.on)后没有立即设置全局变量
- 如何在不设置全局变量的情况下确定是否已调用函数
- 在函数内设置全局范围变量
- 在函数内设置全局变量
- jQuery / JS设置全局变量,但卡在传递给AJAX自定义函数
- 在 jsdom 加载的脚本中设置全局变量
- 设置全局变量,但未获得预期结果
- 延迟调用 dojo widget 中的函数,直到设置全局变量
- 如何在Javascript中设置全局变量
- ngresource在成功响应中设置全局变量
- 如何在点击事件中设置全局变量