2011-07-07 12 views
9

Acabo de ver esto y creo que es genial.¿Cómo funciona el método .delay de jQuery bajo el capó?

console.log("Starting..."); 
$("#my_element") 
    .fadeIn() 
    .delay(3000) 
    .fadeOut(); 
console.log("Finishing..."); 

¿Cómo funciona el método .delay bajo el capó? Quiero decir, ¿cómo se da cuenta de cómo esperar 3 segundos pero no interrumpir el flujo de control principal?

+1

http://james.padolsey.com/jquery/#v=1.6 .2 y fn = retraso – Neal

Respuesta

6

jQuery tiene un objeto interno "cola", que es sólo una matriz:

[ nextAction, 
    action, 
    action, 
    lastAction ] 

Cuando se utiliza delay, empuja:

function delay(ms){ 
    setTimeout(dequeue, ms) 
} 

Lo que significa que una vez que llega a la demora, hay un tiempo de espera y luego se dispara la siguiente acción. Acciones que ocurren inmediatamente, como .css, sin embargo, hacer:

function css(){ 
    // do stuff 
    dequeue(); 
} 

sin demora.

Cuestiones relacionadas