1 回答
TA贡献1873条经验 获得超9个赞
由于您知道需要运行多少个事务 ( array.length),您可以计算完成了多少个事务,然后在最后一个之后重新加载窗口:
let doneCount = 0;
for (var i = 0; i < array.length; i++) {
let brand = array[i];
database.ref("brands/" + brand).transaction(function (post) {
if (post) {
if (post.followers != null) {
post.followers++;
} else {
post.followers = 1;
}
}
return post;
}, function(error, committed, snapshot) {
if (doneCount++ == array.length) {
window.location.reload();
}
});
}
另请参阅runTransaction
.
但是几个月后,有一种更简单的方法可以做到这一点:使用ServerValue.increment()运算符。事实上,有了它,您可以将整个循环组合成一个更新语句:
let updates = {};
for (var i = 0; i < array.length; i++) {
let brand = array[i];
updates[`brands/${brand}] = firebase.database.ServerValue.increment(1);
}
database.ref().update(updates);
简单多了!
添加回答
举报