2012-05-06 14 views
5

Ho letto molte risposte e post di blog sulle code di jQuery ... e in particolare questa particolare risposta ha aiutato molto - https://stackoverflow.com/a/3314877/1315811. Ma entrambi i documenti standard su jquery.com e la risposta sopra mi hanno dato un'occhiata al codice jquery http://code.jquery.com/jquery-1.7.2.jsCome si avvia la coda 'fx' in jQuery?

Quello che non riesco a capire - dal codice - come si avvia la coda 'fx' (predefinita). Soprattutto dopo che la coda è stata svuotata.

Ad esempio su una coda personalizzata, quando si avvia manualmente la coda e la coda esaurisce le funzioni da chiamare, qualsiasi riferimento alla coda non è più valido, quindi mi aspetto che da qualche parte nel codice jquery venga tentato di capire lo stato della coda e se fosse vuoto lo avvii automaticamente? Il codice mostra come sono andato a finire, se mi manca solo un pezzo di codice (guardo la riga: 2060-2160 nel codice sopra citato) per favore fatemelo sapere.

> 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 

Inoltre, se una qualsiasi parte di questo è chiaro, per favore fatemelo sapere e vi aggiornerò di conseguenza.

risposta

1

Questa porzione di codice all'interno del codice queue gestisce l'avvio automatico:

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

Se la coda messe in coda è fx e la coda non è già in corso, dequeue si chiama.

+0

Grazie, non stavo prendendo in considerazione la sentinella "inprogress" e mi aspettavo che facessero qualcosa con la lunghezza della coda ... – mspisars