Página 1 de 4
jQuery tiene algunas formas interesantes de hacer las cosas, y una que no puede perderse es la posaderas de funciones. Es una gran idea y una vez que le cojas el truco te preguntarás cómo has podido comportarse sin ella.
Este es un extracto de mi vademécum. Solo jQuery La interfaz de heredero principal.
comprar en Amazon
Comprensión de los selectores jQuery CSS básicos de jQuery
Extracto: Los selectores DOM plus
Extracto: Selectores básicos Filtros de objetos JQuery Filtros transversales DOM Publicación de objetos DOM
Extracto: Cambiando el DOM Creando objetos y cambiando la cargo del DOM
Uso de las colas de funciones del módulo de datos ***¡NUEVO! Animación jQuery UI jQuery UI Control personalizado Prueba de complementos jQuery con QUnit Epilog Una característica adicional
Incluso habitable:
Publicidad:
comprar en amazon
Es la decisión a un problema particular de llamamiento de función asíncrona. Determina cuándo termina una función y puede comenzar la venidero. En muchos sentidos, la función de posaderas ha sido reemplazada por Promise, que es más capaz, pero por su simplicidad es difícil de aventajar y vale la pena conocerla.
Colas de funciones básicas
Cada punto puede tener cualquier número de colas de funciones asociadas. Esencialmente, una posaderas de funciones es solo una matriz utilizada para acumular funciones y no es falta particularmente sofisticado. Una posaderas de funciones en existencia funciona de la modo que se imaginaría si implementara la misma función usted mismo. Cada punto puede tener tantas colas de funciones con nombre como desee especificar, pero además hay una posaderas predeterminada llamamiento fx que se utiliza para la animación. La posaderas predeterminada tiene un comportamiento levemente diferente, pero hablaremos de eso más delante.
Para crear una posaderas, puede usar la función .queue o $.queue. La única diferencia es que la función .queue crea una posaderas para cada uno de los rudimentos de un resultado y la función $.queue debe tener el punto especificado como primer parámetro. En la mayoría de los casos, debe usar .queue.
No puede crear una posaderas sin agregarle una función.
Por ejemplo:
$({}).queue(«miCola»,miFuncion);
agrega myFunction a una posaderas llamamiento myQueue y la crea si aún no existe.
En este ejemplo, la posaderas se crea en un objeto hueco, lo cual es perfectamente válido y regular. Si la función de posaderas necesita aplicarse a uno o más rudimentos, como todos los divs, entonces debería usar poco como:
$(«div»).queue(«miCola»,miFuncion);
Esto agrega una posaderas llamamiento myQueue a cada uno de los divs del documento. La preeminencia de usar un punto es que se establece en el punto cuando se ejecuta cualquier función en la posaderas, lo que facilita que la función modifique el punto.
Puede pegar varias funciones a una posaderas. Por ejemplo:
var obj=$({}).posaderas(«miCola»,miF1) .posaderas(«miCola»,miF2) .posaderas(«miCola»,miF3)
Posteriormente de esto, la posaderas tiene tres funciones almacenadas.
Varias funciones le permiten ingresar y manipular la posaderas:
.queue(«queueName») devuelve la posaderas como una matriz .queue(«queueName»,newQueue) reemplaza la posaderas con la matriz de funciones especificada por newQueue .clearQueue(«queueName») elimina todas las funciones de la posaderas
Incluso vale la pena retener que una vez que haya usado la función de posaderas para recuperar su conjunto de funciones, además puede usar los métodos habituales de Array (push, pop, unshift y shift) para manipular la posaderas. La posaderas en existencia no es más que una matriz, como se demuestra en este ejemplo:
var obj = $({}).queue(«myQueue», myF1) .queue(«myQueue», myF2) .queue(«myQueue», myF3); console.log(obj.queue(«myQueue»).length); función miF1() { consola.log(«miF1»); }
función miF2() { consola.log(«miF2»); } función myF3() { console.log(«myF3»); }
Puede ver que hemos puesto en posaderas tres funciones y la propiedad de largo se usa para confirmar que la matriz tiene tres rudimentos.
Quitar de la posaderas
No hay falta inteligente o emocionante en la posaderas de funciones hasta ahora. Es simplemente una serie de funciones. Tenga en cuenta que cuando se agregan funciones a la posaderas, simplemente se sientan allí sin hacer falta. Por ejemplo, no ve falta impreso en el registro de la consola por las funciones en el ejemplo final en la última sección.
Entonces, ¿cómo hacer que las funciones hagan poco?
La respuesta es quitar la posaderas. Cuando ardor a dequeue, se ejecuta la función al principio de la posaderas. Tenga en cuenta que la posaderas es una posaderas FIFO (primero en entrar, primero en salir). Esto significa que dequeue ejecutará la primera función que ponga en posaderas.
Entonces, en el caso de la posaderas de tres funciones asociada con obj en el ejemplo preliminar:
obj.dequeue(«miCola»);
dará como resultado la ejecución de myF1 y verá myF1 impreso en el registro. Eso es todo lo que sucede: el dequeue realiza una sola función. Si desea ejecutar la venidero función, debe usar dequeue nuevamente:
obj.dequeue(«miCola»);
entonces verá myF2 en el registro.
Para ver las tres funciones realizadas, necesita:
obj.dequeue(«miCola») .dequeue(«miCola») .dequeue(«miCola»);
Esto es proporcionado obvio de entender, pero ¿qué posible beneficio puede proporcionar?
La idea esencia es que la función de aniquilación de posaderas se puede considerar en el sentido de «Terminé, continúe con la venidero función en posaderas». Una vez que te des cuenta de esto, puedes escribir las funciones que deseas poner en posaderas para que eliminen automáticamente todas las demás funciones restantes:
función miF1() { consola.log(«miF1»); $(esto).dequeue(«miCola»); }
función miF2() { consola.log(«miF2»); $(esto).dequeue(«miCola»); }
función miF3() { consola.log(«miF3»); $(esto).dequeue(«miCola»); }
Tenga en cuenta que cuando se ejecuta cada una de las funciones, este es el objeto sin procesar en el que se define la posaderas. Para usar la aniquilación de la posaderas, necesitamos envolver el objeto como un objeto jQuery.
Con estas nuevas características, toda la posaderas puede ser manejada por una sola persona
obj.dequeue(«miCola»);
myF1 luego ejecuta myF2 en virtud de su función de aniquilación de posaderas, y myF2 ejecuta myF3 en virtud de su comando de aniquilación de posaderas. Obviamente, la función de aniquilación de posaderas de myF3 no hace falta porque la posaderas está vacía en este punto.
Nuevamente, el mecanismo es lo suficientemente simple de entender, pero es una forma compleja de realizar solo tres funciones, una tras otra. Sin requisa, cuando se tráfico de funciones asíncronas, no siempre es tan obvio cerciorarse de que se ejecuten una tras otra.