2011-07-07 49 views
9

我剛看到這個,覺得很酷。jQuery的.delay方法如何在內部工作?

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

.delay方法是如何工作的?我的意思是,它如何計算如何等待3秒鐘,但不會中斷主控制流程?

+1

http://james.padolsey.com/jquery/#v=1.6 0.2&FN =延遲 – Neal

回答

6

jQuery有一個內部的 「隊列」 對象,這只是一個數組:

[ nextAction, 
    action, 
    action, 
    lastAction ] 

當您使用delay,它推動:

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

這意味着一旦它到達延遲,有一個超時,然後下一個動作被解僱。立即發生的行爲,如.css,但是,請執行以下操作:

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

沒有延遲。