所以我试图在任何情况下查看是否有任何用户是管理员。由于某种原因,数组将填充最后一次查找的索引。知道为什么会这样吗?
for(var x = 0;x<=10;x++){
console.log(x);
var current = x;
firebase.database().ref('/Event/' + x + "/admins").once('value').then(function(snapshot) {
console.log(snapshot.val());
if(snapshot.val()==uid){
console.log("Match found at "+(current)+"!");
matchingEvents.push(current);
}
});
}
数组最终看起来像这样: [10,10,10,10,10]
答案 0 :(得分:0)
在调用匿名函数时,循环已经完成,因此current = 10
。这是与闭包有关的范围问题。
这样做的正确方法可能是
.then((function(current) {
return function(snapshot) {
// Things using current
}
})(current));