gpt4 book ai didi

javascript - 在执行下一个函数之前等待循环完成

转载 作者:行者123 更新时间:2023-12-04 08:39:07 25 4
gpt4 key购买 nike

我需要等待 for 循环完成,然后才能开始使用“experimentArray”。在我继续使用experimentArray之前,我如何等到这完成?我试过 promise 、异步等待等

 let experimentArray = []
for (i = 0; i < this.state.gameRoomMembers.length; i++) {
firebase.firestore().collection('users').doc(this.state.gameRoomMembers[i]).collection('groupChats').get().then(snapshot => {
if (!snapshot.empty) {
snapshot.forEach(doc => {
experimentArray.push(doc.data().key)
})
}
})
}
console.log(experimentArray.length) // outputs 0

最佳答案

您所看到的是预期的,如 get()对 Firestore 的调用是异步的。
你真的等不及他们了。但与 await (甚至 Promise.all() )你可以非常接近:

let promises = [];
for (i = 0; i < this.state.gameRoomMembers.length; i++) {
promises.push(firebase.firestore().collection('users').doc(this.state.gameRoomMembers[i]).collection('groupChats').get());
}
let experimentArray = []
Promise.all(promises).then(snapshots => {
snapshot.forEach(snapshot => {
if (!snapshot.empty) {
snapshot.forEach(doc => {
experimentArray.push(doc.data().key)
})
}
})
});
console.log(experimentArray.length)

关于javascript - 在执行下一个函数之前等待循环完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64654873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com