【发布时间】:2017-10-08 06:16:16
【问题描述】:
在下面的代码中,我将每个项目的键和电子邮件地址保存在一个表中,并使用所述键检索要从原始表中获取的对象。我可以看到,当我使用 console.log 时,这些项目正在被放入 rawList 数组中,但是该函数在其中包含任何内容之前返回了 this.cartList,因此视图不会接收任何数据。我怎样才能让this.cartList 等待rawList 已满再返回?
ionViewWillEnter() {
var user = firebase.auth().currentUser;
this.cartData.getCart().on('value', snapshot => {
let rawList = [];
snapshot.forEach(snap => {
if (user.email == snap.val().email) {
var desiredItem = this.goodsData.findGoodById(snap.val().key);
desiredItem.once("value")
.then(function(snapshot2) {
rawList.push(snapshot2);
});
return false
}
});
console.log(rawList);
this.cartList = rawList;
});
}
我尝试将 this.cartList = rawList 放在多个不同的位置(在 return false 之前,甚至在 .then 语句内,但这并没有解决问题。
【问题讨论】:
-
return 语句仅适用于同步工作。 Firebase 查询是异步的,因此您需要通过回调返回数组。
标签: javascript angular firebase callback firebase-realtime-database