簡體   English   中英

map函數完成后如何調用函數

[英]How to call function after map function done

nodejs 響應返回空數組。 地圖功能完成后如何返回響應

  var follow = [];
  User.findOne(
    { _id: id },
  ).then(user => {
    user.following.map(results => {
      User.find({ _id: results.user })
        .exec()
        .then(res => {
          follow.push(res);
     });
    });
    res.json({
      status: true,
      follow // returning null array
    });
  });
};

您需要收集承諾並使用Promise.all()來了解它們何時完成:

User.findOne({ _id: id }).then(user => {
    let promises = user.following.map(results => {
      return User.find({ _id: results.user })
        .exec()
        .then(res => {
          return res;
     });
    });
    Promise.all(promises).then(follow => {
        res.json({
          status: true,
          follow // returning null array
        });
    }).catch(err => {
        console.log(err);
        res.sendStatus(500);
    });
});

請注意,如果您不打算從.map()回調中返回任何內容,則在您的原始代碼中沒有理由使用.map() 在我的代碼中,我返回了承諾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM