js超時調(diào)用setTimeout和間歇調(diào)用setInterval實例分析
本文實例分析了js超時調(diào)用setTimeout和間歇調(diào)用setInterval的用法。分享給大家供大家參考。具體如下:
今天看了javascript高級程序設計(第三版)一書,發(fā)現(xiàn)說setTimeout比setInterval更好,覺得的確如此。平時都是用setInterval多點,現(xiàn)在還是轉(zhuǎn)一下思路了。又學習到了。分析如下:
setTimeout包含兩個參數(shù),第一個參數(shù)是要執(zhí)行的代碼,第二個參數(shù)是時間。
第一個參數(shù)可以是字符串也可以是函數(shù),但是推薦使用函數(shù)而不是字符串。
使用字符串相當于eval方法。導致性能損失。
clearTimeout()
超時調(diào)用的代碼都是在全局作用域中執(zhí)行的,因此函數(shù)中this的值在費嚴格模式下指向window對象,在嚴格模式下是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í)行代碼之后,如果不再設置另一次超時調(diào)用,調(diào)用就會自行停止。
一般認為,如果超時調(diào)用用來模擬間歇調(diào)用的是一種最佳模式。
在開發(fā)環(huán)境下,很少真正的間歇調(diào)用,原因是后一個間歇調(diào)用可能會在前一個間隙調(diào)用結(jié)束之前啟動。
最好不要使用間歇調(diào)用。
希望本文所述對大家的javascript程序設計有所幫助。
相關文章
js大數(shù)相加出現(xiàn)精度丟失、運算錯誤的問題
js中數(shù)字類型長度達到16位時,進行加減乘除運算,會出現(xiàn)精度丟失,運算結(jié)果錯誤的問題,本文講述精度丟失的原因及解決辦法2023-08-08前端常見的時間轉(zhuǎn)換方法以及獲取當前時間方法小結(jié)
在做開發(fā)時會對不同的時間格式進行轉(zhuǎn)換,下面這篇文章主要給大家介紹了關于前端常見的時間轉(zhuǎn)換方法以及獲取當前時間方法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01