【发布时间】:2020-07-02 15:36:09
【问题描述】:
这个疑问是关于承诺的。 我需要将子集合'bar'的文档添加到块外初始化的数组中
...
foo.bars = new Array<IBar>();
let manyBars = documentRef.collection('bar').listDocuments();
(await manyBars).forEach( barItem => {
barItem.get().then(barDocument => {
let bar: IBar = JSON.parse(JSON.stringify(barDocument.data()));
if (foo.bars !== null) {
foo.bars.push(bar);
console.log('in');
}
});
});
console.log('out');
我的 console.log() 会先打印“out”,然后再打印“in”。我究竟做错了什么? forEach 方法有“等待”。
【问题讨论】:
-
get()也是异步的并返回一个承诺。您将无法在 forEach 循环中使用 await。您将需要另一种策略。见:stackoverflow.com/questions/37576685/… -
谢谢,我用 Promise.all(...) 试过了,效果很好
标签: javascript firebase foreach promise async-await