我剛看到這個,覺得很酷。jQuery的.delay方法如何在內部工作?
console.log("Starting...");
$("#my_element")
.fadeIn()
.delay(3000)
.fadeOut();
console.log("Finishing...");
.delay方法是如何工作的?我的意思是,它如何計算如何等待3秒鐘,但不會中斷主控制流程?
我剛看到這個,覺得很酷。jQuery的.delay方法如何在內部工作?
console.log("Starting...");
$("#my_element")
.fadeIn()
.delay(3000)
.fadeOut();
console.log("Finishing...");
.delay方法是如何工作的?我的意思是,它如何計算如何等待3秒鐘,但不會中斷主控制流程?
jQuery有一個內部的 「隊列」 對象,這只是一個數組:
[ nextAction,
action,
action,
lastAction ]
當您使用delay
,它推動:
function delay(ms){
setTimeout(dequeue, ms)
}
這意味着一旦它到達延遲,有一個超時,然後下一個動作被解僱。立即發生的行爲,如.css
,但是,請執行以下操作:
function css(){
// do stuff
dequeue();
}
沒有延遲。
它基本上使用超時與你的時間,你放入延遲功能。
參見源代碼在這裏:http://james.padolsey.com/jquery/#v=1.6.2&fn=delay
爲隊列和出隊的代碼也是有用的:
http://james.padolsey.com/jquery/#v=1.6.2&fn=queue
http://james.padolsey.com/jquery/#v=1.6.2&fn=jQuery.dequeue
http://james.padolsey.com/jquery/#v=1.6 0.2&FN =延遲 – Neal