В приведенном ниже коде я хочу финишировать sh сначала завершение для l oop, а затем после выполнения res.render () (я имею в виду синхронно), но здесь функция res.render () запускается до завершения для l oop ..... Однако, если я использую setTimeout (function () {res.render ("checkout", {user: req.user, cartItems: cartItems, sum: sum})}, 1500 ); это работает, но я делаю это настойчиво, потому что вышеупомянутое для l oop завершается до 1500 миллисекунд, поэтому правильные элементы будут отображаться на передней стороне. Пожалуйста, помогите мне .... Я просто хочу запустить его сразу после того, как все мои задачи будут выполнены. . . . . .
app.get("/profile/checkout", function(req, res) {
if(req.isAuthenticated()) {
var cartItems=[];
var sum=0;
if(req.user.cart.length >= 1) {
for(let eachItems of req.user.cart) {
Product.findOne({_id: eachItems.product_id}, function(err, foundData) {
if (err) throw err;
else {
sum = sum + foundData.price;
var obj = {
cart_item_id: eachItems._id,
product_id: foundData._id,
brand: foundData.brand,
title: foundData.title,
price: foundData.price,
image: foundData.image,
selected_size: eachItems.selected_size
};
cartItems.push(obj);
console.log(cartItems);
}
});
}
res.render("checkout", {
user: req.user,
cartItems: cartItems,
sum: sum
});
} else {
res.render("checkout", {user: req.user});
}
} else {
res.redirect("/home/login");
}
});