Estoy creando una aplicación de compras y estoy escribiendo una función JS que al hacer clic recupera los cupones de mi base de datos backend a través de una API. Me doy cuenta cuando uso esperar, a veces es bastante lento (alrededor de 300 ms) pero el tiempo varía. Para explicar la operación de extremo a extremo desde que se hace clic en el botón, son 300 ms. La operación de recuperación de la base de datos es de unos 80 ms. Eso significa que en el extremo JS son aproximadamente 220 ms. Creo que la función de espera lo está ralentizando.
Tengo que esperar para obtener la respuesta de la API para verificar si hay un código de cupón válido.
¿Hay alguna forma de mejorar este código?
// coupon $('.coupon').click(function() { (async () => { var startTime = performance.now(); alert('Run some function here'); var couponfield = document.getElementById("couponfield") console.log("TEST") console.log(couponfield.value) const rawResponse = await fetch(`/getcoupons?couponcode=` + couponfield.value, { method: 'GET' }); response = await rawResponse.text() console.log(response) jsonarray = JSON.parse(response) console.log(jsonarray.DISCOUNT) couponflag = couponfield.value console.log(jsonarray) if (couponfield.value===jsonarray.DISCOUNT_CODE){ console.log("after now example") for (i in cart){ cart[i].couponcode = couponfield.value; cart[i].discount = jsonarray.DISCOUNT/100; cart[i].oldTotal = cart[i].price * cart[i].count; cart[i].total = cart[i].price * cart[i].count * (1-cart[i].discount); } } /* for (let i=0; i<jsonarray.length; i++){ if (jsonarray[i]===couponfield.value){ console.log("equal") couponflag = couponfield.value shoppingCart.addCouponCart(couponfield); } } */ displayCart(); var endTime = performance.now(); var totalTime=endTime-startTime;// time took to run in milliseconds alert('Total time:'+totalTime +'ms'); })(); });