Я пытаюсь экспортировать массив объектов данных для дальнейшего использования, хотя я могу использовать обещания, чтобы дождаться, пока все данные не будут добавлены в массив, прежде чем регистрироваться, я заметил, что когда я пошел использовать эти данные, я не смогпотому что даже с Promise.all длина массива все еще была нулевой, как будто ничего не изменилось.
Я пытался вести журнал консоли каждый раз, когда doc.data () помещался в exportArray, и заметил, что он регистрирует это после вывода массива.Так, например ...
Ожидаемый вывод
doc.data() // For Each doc
Array[] // Filled with data and length 54
Length: 54
Фактический вывод
Array[] // Filled with data and length 54
Length: 0
doc.data() // For Each doc
let exportArray = [];
let promises = [];
db.collection('lists').doc('List 1').collection("members")
.get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
promises.push(
new Promise(function (resolve, reject) {
exportArray.push(doc.data());
resolve();
console.log('before');
})
);
});
});
Promise.all(promises).then(function () {
console.log(exportArray); // Logs correctly with all data with length 54
console.log(exportArray.length); // Logs as 0 for some reason
});
В идеале это должно вывести exportArray с его данными ANDдлина 54. Однако он выводит данные, но длина выводится как 0. (и да, я нажал на массив данных в консоли, и он показывает длину 54)
Почему массив заполняетсяно я не могу правильно использовать методы, например exportArray.length?