js超時調(diào)用setTimeout和間歇調(diào)用setInterval實例分析
本文實例分析了js超時調(diào)用setTimeout和間歇調(diào)用setInterval的用法。分享給大家供大家參考。具體如下:
今天看了javascript高級程序設(shè)計(第三版)一書,發(fā)現(xiàn)說setTimeout比setInterval更好,覺得的確如此。平時都是用setInterval多點,現(xiàn)在還是轉(zhuǎn)一下思路了。又學(xué)習(xí)到了。分析如下:
setTimeout包含兩個參數(shù),第一個參數(shù)是要執(zhí)行的代碼,第二個參數(shù)是時間。
第一個參數(shù)可以是字符串也可以是函數(shù),但是推薦使用函數(shù)而不是字符串。
使用字符串相當(dāng)于eval方法。導(dǎo)致性能損失。
clearTimeout()
超時調(diào)用的代碼都是在全局作用域中執(zhí)行的,因此函數(shù)中this的值在費(fèi)嚴(yán)格模式下指向window對象,在嚴(yán)格模式下是undefined
var num = 0;
var max = 10;
var intervalId = null;
function incrementNumber(){
num++;
if(num == max){
clearInterval(innervalId);
alert('done');
}
}
intervalId = setInterval(incrementNumber(),500);
//setTimeout 實現(xiàn)相同功能
var num = 0;
var max = 10;
function incrementNumber2(){
num++;
if(num < max){
setTimeout(incrementNumber2,500);
}else{
alert('done');
}
}
setTimeout(incrementNumber2,500);
以上對比可以發(fā)現(xiàn),使用超時調(diào)用時,沒有必要跟蹤超時調(diào)用id,因為每次執(zhí)行代碼之后,如果不再設(shè)置另一次超時調(diào)用,調(diào)用就會自行停止。
一般認(rèn)為,如果超時調(diào)用用來模擬間歇調(diào)用的是一種最佳模式。
在開發(fā)環(huán)境下,很少真正的間歇調(diào)用,原因是后一個間歇調(diào)用可能會在前一個間隙調(diào)用結(jié)束之前啟動。
最好不要使用間歇調(diào)用。
希望本文所述對大家的javascript程序設(shè)計有所幫助。
相關(guān)文章
ES6 Set結(jié)構(gòu)的應(yīng)用實例分析
這篇文章主要介紹了ES6 Set結(jié)構(gòu)的應(yīng)用,結(jié)合實例形式分析了ES6 set結(jié)構(gòu)的功能、特點、常見用法及相關(guān)操作注意事項,需要的朋友可以參考下2019-06-06js大數(shù)相加出現(xiàn)精度丟失、運(yùn)算錯誤的問題
js中數(shù)字類型長度達(dá)到16位時,進(jìn)行加減乘除運(yùn)算,會出現(xiàn)精度丟失,運(yùn)算結(jié)果錯誤的問題,本文講述精度丟失的原因及解決辦法2023-08-08Ajax高級筆記 JavaScript高級程序設(shè)計筆記
這篇文章主要介紹了Ajax高級筆記 JavaScript高級程序設(shè)計筆記,需要的朋友可以參考下2017-06-06前端常見的時間轉(zhuǎn)換方法以及獲取當(dāng)前時間方法小結(jié)
在做開發(fā)時會對不同的時間格式進(jìn)行轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于前端常見的時間轉(zhuǎn)換方法以及獲取當(dāng)前時間方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01