为什么将数据推送到JavaScript数组后为空?

时间:2019-03-22 17:04:08

标签: javascript

我正在尝试在数组中添加索引,但它的行为就像是空的。但是,当执行控制台日志时,我可以看到阵列中的项目。为什么这样做呢?即时通讯使用的代码如下:

 /***********CART**********/
 const cartFeed = document.querySelector("#cartFeed");
 const c = document.querySelector("#cartTotal");
 const addingPrices = [];

 db.collection('shoppingSession').doc(this.browserSession).collection('inCart').get().then(function (querySnapshot) {
     querySnapshot.forEach(function (doc) {
         
         var idName = doc.id;
         var title = doc.data().title;
         var qty = Number(doc.data().qty);
         var price = Number(doc.data().price);
         var itemTotal = qty * price;
         var orderTotal = 90.00;
         var thiss = orderTotal.toFixed(2);

         addingPrices.push(itemTotal);

         cartFeed.innerHTML += " \
            <div'>\
                <table>\
                    <tr>\
                        <td>" + title + "</td>\
                        <td>" + qty + "</td>\
                        <td class='itemTotal'>" + itemTotal + "</td>\
                    </tr>\
                </table>\
            </div>";
     });
 });

//Add the prices in the array

var sum = 0;
for (var i = 0; i < addingPrices.length; i++) {
  sum += addingPrices[i]
}

console.log(addingPrices);

1 个答案:

答案 0 :(得分:0)

这是同步/异步问题。查看每个索引并将其记录的代码将在将项目推入数组的代码之前运行。您必须移动逻辑以将数组读入与要推送到该数组的逻辑相同的回调中,或者找到其他方法来使代码在调用querySnapshot的回调后运行。