Cuando una función está encadenada en JQuery, ¿cuál es el orden de las operaciones?¿Cómo se ejecutan las funciones encadenadas en JQuery?
Ejemplo 1
$(selector).fun1(val,{fun2(){ }}
Ejemplo 2
$(selecter).fun1().fun2().fun3()
Cuando una función está encadenada en JQuery, ¿cuál es el orden de las operaciones?¿Cómo se ejecutan las funciones encadenadas en JQuery?
Ejemplo 1
$(selector).fun1(val,{fun2(){ }}
Ejemplo 2
$(selecter).fun1().fun2().fun3()
De izquierda a derecha. fun3()
se ejecuta en el resultado (= valor de retorno) de fun2()
, fun2()
en el de fun1()
.
Este tipo de encadenamiento se puede hacer en JQuery porque cada función encadenable devuelve el objeto/elemento sobre el que se invocó.
Entonces $(selector).fun1()
devuelve el elemento $(selector)
después de la ejecución. fun2()
se llama desde ese elemento devuelto, y así sucesivamente.
Gracias amigo! Tu respuesta es muy útil para mí. –
En este ejemplo:.
$(selector).fun1(val,{fun2(){ }}
El segundo parámetro para funcionar uno es un callback function. Esto significa que fun1
ejecuta ENTONCESfun2
ejecuta.
En este ejemplo:
$(selecter).fun1().fun2().fun3()
Todas las funciones se disparó fuera lo más rápidamente posible si tienen una duración, como decir una animación. De lo contrario, se ejecutan en orden fun1
, fun2
, fun3
.
Así, con animaciones, fun1
, fun2
y fun3
habría 3 animaciones superpuestas simultaenous, pero con otras operaciones sincrónicas, simplemente pasar en orden.
'Así que con animaciones, fun1, fun2 y fun3 serían 3 animaciones simultáneas superpuestas' - Creo que estás complicando un poco esta parte. Con las animaciones, las funciones reales todavía se activan en orden, pero a su vez crean intervalos con funciones de devolución de llamada. Como JS tiene un solo subproceso, las funciones no pueden ejecutarse de forma asíncrona. Los temporizadores marcan separados del hilo principal, pero sus funciones de devolución de llamada se ejecutan en el hilo principal cuando está inactivo. –
@Andy - Es cierto, quise decir * effect * es simultáneo y se superpone :) –
Gracias amigo! Estaba muy confundido antes, pero ahora mi confusión ha desaparecido. ¡Gracias de nuevo! –
Buena información, que me ayudó a entender esto mucho. – Adamantus