在forEach循环中跟踪承诺

时间:2019-11-21 13:37:42

标签: javascript promise

假设我有一个数组,正在使用forEach循环进行迭代。 对于每个元素,我正在运行Firestore set()函数。

一旦所有承诺都完成,我想得到一个回调。

是否有比将所有promise放入数组然后再使用Promise.all()更好的方法?

var promArr = [];

arr.forEach(elem => {
   promArr.push(db.collection('col').doc(elem).set({
     key: 'value'
   }))
})

Promise.all(promArr).then(_ => {
   console.log('All promises fulfilled.')
})

1 个答案:

答案 0 :(得分:2)

您可以使用map保存一行:

const promArr = arr.map(elem => {
   return db.collection('col').doc(elem).set({
     key: 'value'
   });
});