kamagra-online-pharmacy-uk-paypal otc zofran no perscription pharmacy risks of buying off the plan apartments mobicash shop price of benadryl cough syrup india lamictal reviews borderline personality

A menudo, cuando hacemos aplicaciones del lado del cliente con JQuery, tenemos la necesidad de encadenar varias llamadas a funciones, para que una se ejecute detrás de otra, creando efectos más elaborados.

En este artículo aprenderemos lo que en inglés se denomina callback, es decir, una función que se realiza después de otra.

Apilar funciones para que se ejecuten una detrás de otra nos será útil para realizar muchas cosas. Imaginemos que deseamos ocultar una capa con un efecto de fundido (de opaco a transparente), luego moverla a otra posición y volverla a mostrar (ya en la nueva posición). En principio podríamos pensar en crear el siguiente código.

$("#micapa").fadeOut(2000);
$("#micapa").css({top:300, left:200});
$("#micapa").fadeIn(2000);

En este caso estamos alterando las propiedades de una capa con id="micapa". Primero se llama a fadeOut() para ocultarla con un fundido, el cual durará dos segundos, después alteramos la posición de la capa, para posteriormente mostrarla con otro fundido de dos segundos (2000 milisegundos).

Si lanzamos la ejecución de tales sentencias, es como si se ejecutasen todas a la vez. Como los fadeOut() y fadeIn() tardarán 2 segundos en ejecutarse, y los cambios de las propiedades CSS top y left son inmediatos, lo que ocurrirá es que primero veremos la capa moverse a la nueva posición, y luego veremos los dos efectos de fundido.

Realizar una pila de ejecución de funciones

Tenemos que saber que todas las funciones o métodos de JQuery pueden recibir un parámetro adicional con el nombre de la función que se tiene que ejecutar después que termine el procesamiento de la primera. Esta segunda función que se ejecutará después de la primera es la que se conoce en inglés como callback. Veamos un ejemplo sencillo para entender el proceso.

miFuncion("parámetros de la función",funcionCallBack);

En este ejemplo, a miFuncion se le están pasando dos parámetros, el primero sería un supuesto parámetro que necesitase miFuncion(), y el segundo, que es el que interesa, es el nombre de la función que tiene que ejecutarse después de que esta acabe. Con este código, primero se ejecuta miFuncion(), y cuando acaba completamente, se ejecuta funcionCallBack().

Ojo, ya que este código solo funcionará si funcionCallBack no recibe parámetros, por lo que vamos a ver una forma para que funcione siempre (tenga dicha función parámetros o no).

miFuncion("parametros de la funcion", funcion(){
funcionCallBack();
}):

Con este código, que funcionaría igual que el anterior, lo bueno es que sí podemos indicar los parámetros que se necesitan para la llamada a funcionCallBack().

Ejemplo

Vamos a aplicar las llamadas callBack al ejemplo de arriba. La sintaxis sería

$("#micapa").fadeOut(2000,function(){
$("#micapa").css({'top':300,'left':250});
$("#micapa").fadeIn(2000);
});

Como podemos ver, en la llamada a fadeOut() estamos pasando como parámetro 2000, que son los milímetros que tiene que durar el efecto de fadeout (fundido hacia transparente), y luego la función callback, que se ejecutará después de que fadeOut() haya terminado.

Como el método css() (se encuentra como primera instrucción de la función callback() es instantáneo, no necesita hacerse un callback para ejecutar el fadeIn(), sino que se puede escribir directamente.

Sintaxis completa del ejemplo

<!DOCTYPE html>
<html>
<head>
<title>Ejm 12 de JQuery</title>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script>
$(document).ready(function(){
$("#micapa").fadeOut(1000,function(){
$("#micapa").css({'top':200,'left':230});
$("#micapa").fadeIn(1000);
});
});
</script>
</head>
<body>
<div id="micapa">Este es el ejemplo 12</div>
</body>
</html>