У меня есть простая функция, которая вызывает коллекцию пожарных и возвращает список компаний. Я перебираю список и выводю название компании. Как только все будет готово, я хочу написать «готово».
function getCompanies() {
firestore.collection('companies')
.listDocuments()
.then(companies => {
for(var i in companies) {
companies[i].get().then(company => {
console.log(company.name);
});
}
}).catch(err => {
console.error(err);
});
};
getCompanies();
console.log('done');
На самом деле, вот что происходит ...
done
ford
gm
toyota
jeep
vw
Я посмотрел на обещания ...
function getCompanies() {
firestore.collection('companies')
.listDocuments()
.then(companies => {
let promises = [];
for(var i in companies) {
companies[i].get().then(company => {
promises.push(doIt(company.id));
});
}
Promise.all(promises)
.then((results) => {
console.log("All done", results);
})
.catch((e) => {
// Handle errors here
});
}).catch(err => {
console.error(err);
});
};
function doIt(value) {
return new Promise((resolve) => {
setTimeout(() => {
console.log(value);
resolve(value);
}, Math.floor(Math.random() * 1000));
});
}
getCompanies();
Но это тоже не сработало ...
All done []
ford
gm
toyota
jeep
vw
Есть советы или советы? Я чувствую, что забыл сделать что-то очевидное: /.
Заранее спасибо!