I would like to run a function after the for loop done looping, but in my case the function after the for loop runs before the loop even finished. Here's my code
let orderedItems = [];
for (let i = 0; i < orderCode.length; i++) {
  menuModel.findOne({
    _id: orderCode[i]
  }, (err, order) => {
    if (order) {
      orderedItems.push(order.name);
    }
  });
}
console.log(orderedItems); // all the tasks below run before the loop finished looping
let orderData = new orderModel();
orderData._id = helpers.createRandomString(5).toUpperCase();
orderData.username = username;
orderData.orderCode = orderCode;
orderData.orderedItems = orderedItems;
orderData.totalPrice = 5;
orderData.save((err) => {
  if (err) {
    console.log(err);
    callback(500, {
      'Error': '1'
    });
  }
  callback(200, {
    'Message': 'Successfully ordered'
  });
});   
 
     
    