Backbone Firebase异步调用和承诺

时间:2016-05-12 18:19:07

标签: javascript asynchronous backbone.js firebase

我正在尝试从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);
            });
        }

0 个答案:

没有答案