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