第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 foreach 循環(huán)中調(diào)用異步函數(shù)并在循環(huán)完成后返回數(shù)組

在 foreach 循環(huán)中調(diào)用異步函數(shù)并在循環(huán)完成后返回數(shù)組

慕絲7291255 2022-12-02 17:24:00
我試圖在 foreach 循環(huán)中從 API 請求數(shù)據(jù)并將該數(shù)據(jù)推送到一個數(shù)組,然后在最后返回該數(shù)組。這是我的代碼:db            .collection('posts')            .orderBy('createdAt', 'desc')            .limit(10)            .get()            .then((data) => {                let posts = [];                data.forEach((doc) => {                    db                        .doc(`/users/${doc.data().userHandle}`)                        .get()                        .then((userDoc) => {                            posts.push({                                postId: doc.data().id,                                userHandle: doc.data().userHandle,                                userImageUrl: userDoc.data().imageUrl,                                imageUrl: doc.data().imageUrl,                            });                        })                })                return res.json(posts);            })            .catch((err) => {                console.error(err);                res.status(500).json({ error: err.code});            });由此,posts 數(shù)組返回空數(shù)組或?qū)ο螅词刮覍?return res.json(posts) 替換為.then(() => {return res.json(posts);})任何幫助都很棒?。?!
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經(jīng)驗 獲得超3個贊

該數(shù)組為空,因為在發(fā)送響應(yīng)時,帶有帖子的承諾仍在等待解決。


為了解決這個問題,您可以使用 收集數(shù)組中的所有承諾.map(),等待它們在 的幫助下解決,Promise.all()然后發(fā)送響應(yīng):


db

  .collection('posts')

  .orderBy('createdAt', 'desc')

  .limit(10)

  .get()

  .then((data) => {

    const promises = data.map((doc) => {

      return db

        .doc(`/users/${doc.data().userHandle}`)

        .get()

        .then((userDoc) => {

          return {

            postId: doc.data().id,

            userHandle: doc.data().userHandle,

            userImageUrl: userDoc.data().imageUrl,

            imageUrl: doc.data().imageUrl,

          };

        })

    });

    Promise.all(promises).then(posts => {

      res.json(posts);

    })

  })

  .catch((err) => {

    console.error(err);

    res.status(500).json({ error: err.code});

  });


查看完整回答
反對 回復(fù) 2022-12-02
  • 1 回答
  • 0 關(guān)注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號