我正在尝试从Firebase获取数据以显示图表。当我通过for循环单独输入url时,promise似乎工作正常。当我使用for循环时,ref没有更新,并且week [i]未定义。填充xaxis数组后,我将调用另一个函数来显示图表。我是异步回调的新手,任何方向/提示将不胜感激。我想知道为什么在回调中未定义周[i]?
编辑:看起来for循环首先完全运行然后加载firebase。因此,当firebase加载并准备好时,i的值将为6。
var xaxis = [];
var week = [582016, 592016, 5102016, 5112016, 5122016, 5132016, 5142016];
for (var i = 0; i < 6; i++) {
var total_day_calories = 0;
var ref = new Firebase("https://xxxxxxxxxx.firebaseio.com/"+ week[i] );
ref.once('value').then(function(snapshot){
snapshot.forEach(function(childSnapshot) {
var childData = childSnapshot.val().total_calories;
total_day_calories = total_day_calories + childData;
});
xaxis.push(total_day_calories);
console.log(xaxis);
}, function(errorObject) {
console.log("The read failed: " + errorObject.code);
});
}