Javascript 等待异步firebase foreach?
我想等待来自firebase的getAnswers值响应,并将其推送到foreach数组中!我该怎么做Javascript 等待异步firebase foreach?,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,我想等待来自firebase的getAnswers值响应,并将其推送到foreach数组中!我该怎么做 async fetchData() { console.log('fetchdata') const UID = Firebase.auth().currentUser.uid; const ref = FirebaseRef.child('my_questions/' + UID + '/'); // console.log(ref); ref
async fetchData() {
console.log('fetchdata')
const UID = Firebase.auth().currentUser.uid;
const ref = FirebaseRef.child('my_questions/' + UID + '/');
// console.log(ref);
ref
.orderByKey()
.limitToLast(this.state.limit)
.once('value', snapshot => {
var items = [];
snapshot.forEach(child => {
var getAnswers = await FirebaseRef.child('counter/questions/' + child.key + '/count_answers').once('value')
items.push({
key: child.key,
...child.val(),
count_answers: getAnswers
});
});
})
}
您需要使用
Promise.all
和.map
而不是forEach
:
const items = await Promise.all(snapshot.map(async (child) => {
const getAnswers = await Firebase...
...
return {
key: child.key,
...child.val(),
count_answers: getAnswers
}
}))
有关更多详细信息,请参见此答案:您需要使用
Promise.all
和.map
而不是forEach
:
const items = await Promise.all(snapshot.map(async (child) => {
const getAnswers = await Firebase...
...
return {
key: child.key,
...child.val(),
count_answers: getAnswers
}
}))
有关更多详细信息,请参见此答案:firebase快照何时开始支持
map
?@Bergi有趣。。。当我写下这个答案时,我没有意识到快照是一个特定于Firebase的数据收集,我假设此人使用的是一个数组。有鉴于此,我有点惊讶这被标记为正确答案,但你是对的<代码>快照不支持映射
。从什么时候开始firebase快照支持映射
?@Bergi有趣。。。当我写下这个答案时,我没有意识到快照是一个特定于Firebase的数据收集,我假设此人使用的是一个数组。有鉴于此,我有点惊讶这被标记为正确答案,但你是对的<代码>快照不支持映射
。