【发布时间】:2018-12-20 05:40:07
【问题描述】:
每次我发回时间线帖子时,我都不确定。我知道 forEach 完成的速度比承诺的执行速度要快,但我该如何解决这个问题?我尝试在 forEach 中放置一个函数并让它执行第二个承诺,但它不起作用。
getTimelinePosts: (req, res, next) => {
const db = req.app.get("db");
const { userID } = req.params;
let timelinePosts = [];
db.getFollowing([userID]).then(friends => {
friends.forEach((val, i, arr) => {
db.getTimelinePosts([val.friend_id]).then(post => {
timelinePosts.push(post);
});
});
res.status(200).send(timelinePosts);
});
}
【问题讨论】:
-
forEach 不适用于异步代码,您最好使用常规 for:stackoverflow.com/questions/37576685/…
-
@A.Llorente A
for循环加上await绝对不是这里的正确工具。如果有很多friends,则需要的时间会比必要的多得多。最好使用Promise.all -
Promise all 确实更优雅
-
谢谢大家,不知道 Promise.all
标签: javascript reactjs express promise closures