1
我試圖只在forEach循環內的所有承諾都滿足時才返回結果(feedItemsArray),但是代碼在所有承諾返回前執行。確保所有承諾事先被退回的正確方法是什麼?Node.js:forEach在承諾履行前完成承諾
function retrieveFeed(req, res) {
return FeedItem.find().exec()
.then(function(feedItems) {
var feedItemsArray = [];
feedItems.forEach(function(feedItem){
// Do some stuff on feedItem
return Comment.find({feedItem_id : feedItem._id}).exec()
.then(function(comments){
// Do some stuff on comments
return feedItemsArray.push(feedItem);
})
})
return prepareJSONObject(feedItemsArray);
})
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
}
感謝Abhyudit,你的方法完美。 – Karl