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);
簡單多了!
添加回答
舉報