我有以下代码:
let promises = [];
//Return first promise from DB save to zone_obj list
firebase.database().ref('node-client/images').once('value').then(function(snapshot) {
promises.push(snapshot.val());
});
Promise.all(promises).then(values => {
console.log(values); // zone_obj
});
我想查询 firebase 数据库,对于每个快照,将 val 添加到数组中。
我不完全理解承诺的想法,因此为什么这不起作用。
有人可以提供一些解释或示例说明为什么这不起作用/如何解决它。
我认为它会在每次获得 val 时添加一个承诺,然后在添加所有承诺后记录这些值。
当Promise.all()
在您的代码中调用时,该promises
数组仍然为空,因为firebase.database().ref('node-client/images').once('value')
返回一个 Promise,该 Promise 在成功查询数据库后解析。
尝试Promise.all()
在数组完全填充后调用:
let promises = [];
//Return first promise from DB save to zone_obj list
firebase.database().ref('node-client/images').once('value').then(function(snapshot) {
// Push the promises to the array
promises.push(snapshot.val());
})
.then(function() {
// Log the values when all promises are resolved
Promise.all(promises).then(values => {
console.log(values); // zone_obj
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句