Javascript 等待异步firebase 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

我想等待来自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
      .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的数据收集,我假设此人使用的是一个数组。有鉴于此,我有点惊讶这被标记为正确答案,但你是对的<代码>快照不支持
映射