Tengo un problema de ejecución asíncrona, necesito esperar a que una función termine de ejecutarse (es una función que ejecuta un ajax) para que lo que sigue funcione correctamente y tras probar y probar, no encuentro forma que me salga.
Vi que muchos sugieren usar callbacks
, deferred
, etc, pero la verdad es que no encontré forma de hacerlo.
Lo que necesito es que para ejecutar el if
primero termine de contar:
contar();
if (totalpages < actualpage) {
actualpage = totalpages;
desde = (showNumber * actualpage) - showNumber;
$("#contador #actual").html(actualpage);
}
Intenté meter el if
dentro de las acciones a ejecutar cuando termine el ajax con algo similar a esto
$.get("paginaqcuenta.php").done( if..... )
Pero no funcionó.
¿Cómo puedo resolver esta situación?
Edito porque me voy acercando... gracias a la sugerencia de Jhoubert Rincon logre que el bloque del if espere al ajax, ahora lo que me falta es que el cargar posterior espere al bloque del if!
Probé lo siguiente y no funciono:
contar();
$.get("../calcPages.php").done(function(data){
if (totalpages < actualpage) {
actualpage = totalpages;
desde = (showNumber * actualpage) - showNumber;
$("#contador #actual").html(actualpage);
}
}, cargar());
Probé lo siguiente y si funciona, aunque no creo sea la forma mas eficiente de hacerlo, y por ahí no funcionaria con una conexión mas lenta, por ej.
contar();
$.get("../calcPages.php").done(function(data){
if (totalpages < actualpage) {
actualpage = totalpages;
desde = (showNumber * actualpage) - showNumber;
$("#contador #actual").html(actualpage);
}
});
setTimeout(function(){
cargar();
}, 800);
¿Alguno estaría viendo la solución?