2012-05-06 12 views
5

He leído muchas respuestas y publicaciones en blogs sobre las colas de jQuery ... y específicamente esta respuesta en particular me ha ayudado mucho - https://stackoverflow.com/a/3314877/1315811. Pero ambos documentos estándar en jquery.com y la respuesta anterior me permitieron ver el código de jquery http://code.jquery.com/jquery-1.7.2.js¿Cómo funciona la cola 'fx' en jquery auto start?

Lo que no puedo entender, a partir del código, cómo se inicia automáticamente la cola 'fx' (por defecto). Especialmente después de que la cola ha sido vaciada.

Por ejemplo, en una cola personalizada, cuando inicia manualmente la cola y la cola se queda sin funciones para llamar, cualquier referencia a la cola ya no es válida, por lo que era de esperar que en algún lugar del código jquery averiguar el estado de la cola y si estaba vacía, ¿iniciarla automáticamente? El código demuestra algo con lo que me encontré, si solo me falta un fragmento de código (estoy en la línea: 2060-2160 en el código mencionado anteriormente), por favor avíseme.

> var aq = $({}); 
> aq.queue("mp").length 
0 
> n1 = aq.queue("mp") 
[] 
> n1.length 
0 
> aq.queue("mp", function (next) { setTimeout(next, 5000); }) 
[Object] 
> aq.queue("mp", function (next) { setTimeout(next, 5000); }) 
[Object] 
> aq.queue("mp", function (next) { setTimeout(next, 5000); }) 
[Object] 
> n1.length 
0 
> aq.queue("mp").length 
3 
> n1 = aq.queue("mp"); // reset n1 to the "new" queue... 
> n1.length 
3 

Además, si cualquier parte de esto no está claro, por favor hágamelo saber y voy a actualizar en consecuencia.

Respuesta

1

Este fragmento de código en el código queue maneja el inicio automático:

if (type === "fx" && queue[0] !== "inprogress") { 
    jQuery.dequeue(this, type); 
} 

Si la cola en cola es fx y la cola no está ya en curso, dequeue se llama.

+0

Gracias, no estaba teniendo en cuenta el centinela "en progreso" y esperaba que hicieran algo con la longitud de la cola ... – mspisars