I would like to wait untill my function checkNumber() finish and returns result. Unfortunelly for-off loop doesn't wait for function and do all iterations at start. I tried many combinations with async/await but none of them really worked. When i run this function it prints out as many console.log("start error") as loops, and then I get productList. I would like to stop for loop when checkNumber() returns error.
Main function:
  if (!req.body) {
    res.status(400).send({
      message: "Values can not be empty!"
    });
  }
  console.log("list of products: ", req.body.product);
  const productArr = req.body.product; //array of products retrieved from json
  let productList = [];
  let quantityList = [];
  let error = 0;
  for (const product of productArr) { //iterate through products
    console.log("start error: ", error); // <---- 
    if (error == 1) {
      console.log("stop");
      break;
    }
    //check if product's vat exists in vat table, if not add new
    Vat.checkNumber(product.vat, async function (err, data) {
      console.log("result: ", data);
      if (!data) {
        console.log("not found");
        console.log(err);
        error = 1;
      } else {
        console.log("found");
        const vat_id = data;
        //crete new product obj json
        let newProduct = {
          vat_id: vat_id,
          name: product.name,
          price: product.price
        };
        //store product list and their quantity to use later in sql query
        productList.push(newProduct);
        quantityList.push(product.quantity);
        console.log(productList);
        console.log(quantityList);
      }
    });
  }
}
Vat function:
  sql.query("SELECT * FROM vat where number = ?", number, function (err, res) {
    if (err) {
      console.log("error: ", err);
      result(err, null);
      return;
    }
    if (res.length <= 0) {
      err = "Vat cannot be null";
      result({ error: "Vat not found" }, null);
      return;
    }
    console.log("Found vat: ", res[0].id);
    result(null, res[0].id);
    return;
  });
};
 
    