数组不断填充错误的索引

时间:2016-07-12 17:11:49

标签: javascript arrays firebase

所以我试图在任何情况下查看是否有任何用户是管理员。由于某种原因,数组将填充最后一次查找的索引。知道为什么会这样吗?

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]

1 个答案:

答案 0 :(得分:0)

在调用匿名函数时,循环已经完成,因此current = 10。这是与闭包有关的范围问题。

这样做的正确方法可能是

.then((function(current) {
    return function(snapshot) {
        // Things using current
    }
})(current));