setTimeout(func,time)
setTimeout是window對象的一個方法,所以如果要是看到這么寫window.setTimeout你不要感到奇怪,我們平時一般都省略了window。
setTimeout方法接受兩個參數(shù): func - 在指定時間間隔內(nèi)要執(zhí)行的函數(shù); time - 執(zhí)行函數(shù)的時間間隔(以毫秒為單位,1000毫秒等于1秒)
我一開始沒有解釋setTimeout的功能,而是先說了兩個參數(shù)的意思,我想大家看了后就會有所了解,setTimeout的功能就是:設(shè)置定時器,在一段時間之后執(zhí)行指定的代碼。
不如本例中的:
setTimeout(anim, o.speed);
也許你有看過類似的寫法:
function dosomething(){ // do something } setTimeOout('dosomething',1000);
個人建議不要這么寫,是這樣的代碼的可讀性太差,雖然也可以正常執(zhí)行。相信你看到的類似的代碼也是很久前的東西了。如果你還在新買的某本書中看到這樣的寫法,我想你可能很不幸買了本爛書,F(xiàn)在一般我們都這么做:
function whatWeDoNow(){ var str = 'this is what we do now'; if(doalert) { clearTimeout(doalert) } var doalert = setTimeout(function(){ alert(str); },1000); }
而且不知道你發(fā)現(xiàn)沒有,這么寫還有一個好處,你的function還可以接受其他的參數(shù),比如這里我們可以接受whatWeDoNow()函數(shù)中的局部變量。如果你再結(jié)合閉包的使用,好處會更顯而易見。
剛才說的一點應(yīng)該說是一個不好的使用setTimeout的習(xí)慣。呵呵,接下來我還要說的一個更不好的使用習(xí)慣就是只使用setTimeout()方法,而不使用clearTimeout()方法。
clearTimeout(itimeoutid)
clearTimeout()方法的功能是停止定時器,大家看上面的代碼:
clearTimeout(o.scrollTimer);
Timer(定時器),夠直接吧。那么為什么要停止定時器?什么時候停止呢?
為什么要停,我想用個反問:能一直不停嗎,你的機器受得了嗎?這里我想應(yīng)該說說我們使用setTimeout的目的,我們通常使用它來實現(xiàn)像本例這樣的動畫效果。需要在很短的時間內(nèi)連續(xù)不斷的執(zhí)行定時器,當然它是要占資源的啊。想想,只是不斷的創(chuàng)建,而且往往我們做的處理,在1秒中內(nèi)會執(zhí)行很多次函數(shù),一兩次還好,上百上千次,而且一個復(fù)雜些的動畫,執(zhí)行很短的時間內(nèi)幾萬次也不是沒有可能事情。你想想,如果我們不在每執(zhí)行完一次后,銷毀它。要是再加上定時器執(zhí)行的函數(shù)又是個比較NB點的運算,你的寶貴的系統(tǒng)資源...,呵呵!
所以應(yīng)該向我給的例子中那樣,記得在每次執(zhí)行了定時器后停止(銷毀,釋放資源)它。
function whatWeDoNow(){ var str = 'this is what we do now'; if(doalert) { clearTimeout(doalert); // clear } var doalert = setTimeout(function(){ alert(str); },1000); } if (o.scrollTimer) { clearTimeout(o.scrollTimer); // clear }
呵呵,其實銷毀的方法很簡單,就是在每次創(chuàng)建定時器前,判斷是否已經(jīng)創(chuàng)建了訂時器,就像特效例子中的
if (o.scrollTimer) { clearTimeout(o.scrollTimer); // clear } .... .... if (o.scrollHeight % s_area.offsetHeight == 0) { o.scrollTimer = setTimeout(anim, o.speed); } else { o.scrollTimer = setTimeout(anim, 10); }
邏輯就是:
是不是一個很流暢的循環(huán)?現(xiàn)在大家應(yīng)該知道了,為什么要clearTimeout和何時clearTimeout了嗎?
出處:藍色理想
責任編輯:moby
上一頁 不間斷滾動圖片Javascript特效講解 [1] 下一頁 不間斷滾動圖片Javascript特效講解 [3]
◎進入論壇網(wǎng)頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。
|