【发布时间】:2014-07-12 15:40:18
【问题描述】:
我有一个 Angular 应用程序,它允许用户“签出”选定的对象(他们会控制这些对象,直到放回对象池中),它的数量可以在 1 到多个之间。在 ref.transaction() 上使用 for 循环,我得到每个提交的对象的提交。根据这个问题Firebase dataRef.transaction() returns wrong snapshot 的答案,在服务器端,这些可能是批处理的,并且可能无法从批处理事务中获得准确的计数参考。如何判断所有提交的提交是否已完成(即批处理已完成)以及提交的最终计数?例如,我可以遍历 50 个“签出”请求,并且可能只返回不到 50 个提交,因为另一个用户在事务完成之前签出了一个对象。我没有成功使用事务回调来执行此操作。
for(var y=0;y<$scope.stuffSelected.length;y++) {
var myObjectsRef = new Firebase(thisFBRef);
myObjectsRef.transaction(
function(anobject) {
var update = {checkedout:true, checkout_by:'Sammy B', checkout_date: new Date().toUTCString()};
for(var prop in update){
anobject[prop] = update[prop];
}
return anobject;
}, function(error, committed, snapshot) {
if(committed && !error){
console.log('Commit successful ...'); // need someway to identify when this loop is finished
}
}
);
【问题讨论】:
-
如果没有显示您的问题的代码的最小示例,此问题将被关闭。
-
for(var y=0;y
-
所以想法是在收到最后一次提交后,可以将进程传递给像 DOM 状态指示器这样的函数
-
由于您清楚地使用了我对您上一个问题的回答 (stackoverflow.com/a/24704698/209103) 中的建议,如果您接受该答案会很好(通过单击它左侧的大复选标记) .见meta.stackexchange.com/questions/23138/…
-
抱歉 - 但您的回复是评论而不是答案,我感谢您的评论。看起来复选标记只出现在答案中
标签: angularjs firebase angularfire