2010-02-05 42 views

Respuesta

8

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.

+0

Gracias amigo! Estaba muy confundido antes, pero ahora mi confusión ha desaparecido. ¡Gracias de nuevo! –

+0

Buena información, que me ayudó a entender esto mucho. – Adamantus

0
  1. Utiliza una función de "devolución de llamada". Estás pasando fun2 como argumento para fun1, fun1 y luego llama a fun2 cuando termina.
  2. Esta es una característica realmente inteligente de jQuery, la mayoría de los métodos de jQuery devuelven el objeto original en el que se invocó el método, por lo que puede llamar a otro método en ese objeto devuelto. La secuencia es la misma que la secuencia está escrito en
+0

Gracias amigo! Tu respuesta es muy útil para mí. –

5

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.

+1

'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. –

+0

@Andy - Es cierto, quise decir * effect * es simultáneo y se superpone :) –

Cuestiones relacionadas