js定時功能的介紹

概述

在js動畫中我們經常用到定時器這種工具,它也確實很好用。
其中js內置的setInterval()與setTimeout()函數提供了定時的功能,前者是每隔幾秒執(zhí)行一次,后者是延遲一段時間執(zhí)行一次。此外,javascript內置的clearInterval()函數用于取消定時器功能。

setInterval()函數

setInterval()函數可按照指定的周期(以毫秒計)來調用函數或計算表達式。它可以無限執(zhí)行下去,也可以通過clearInterval()函數清除掉 。

//它的基本語法如下:
var timer= setInterval(code, delay);
//其中code是執(zhí)行的代碼,它可以是一個function執(zhí)行函數,delay是指定的周期,以毫秒計,每過多少毫秒執(zhí)行一次前面的代碼。

舉個例子

var fn=function(){  
    console.log("fn()函數被執(zhí)行了");  
}   
setInterval(fn,1000);//每隔1min控制臺輸出一次 

setTimeout()函數

setTimeout()在指定的延遲時間之后調用一個函數或者執(zhí)行一個代碼片段,使用clearTimeout()函數可取消由 setTimeout() 方法設置的延遲調用。

//它的基本語法跟setInterval()差不多:
var timer= setTimeout()(code, delay);
//其中code是執(zhí)行的代碼,它可以是一個function執(zhí)行函數,delay是代碼執(zhí)行延遲的時間,也是以毫秒計。

舉個例子

setTimeout(function() {  
console.log(1);  
}, 1000); //延遲1min后在控制臺輸出1;

再比如:

setTimeout(function() {  
console.log(1);  
}, 0);  
console.log(2);  
//執(zhí)行結果是:先輸出2,再輸出1。  

使用setTimeout()函數優(yōu)化setInterval()函數的方案

一般不用setInterval()函數,而用setTimeout()函數的延時遞歸來代替setInterval()函數。setInterval()函數會產生回調堆積,特別是時間很短的時候。
方案一:

var timeout = false; //啟動及關閉按鈕    
function time() {  
    if(timeout) return;  
    console.log(1);  
    setTimeout(time,1000);  
}  
time();  

方案二:

var fn=function(){  
console.log(1);  
setTimeout(fn, 1000)  
}  
fn();  

最后說一下clearInterval()函數和 clearTimeout()函數的語法。這個很簡單,只要將前面的定時器賦予一個變量,然后在clearInterval()函數或 clearTimeout()函數小括號中寫上這個變量名就可以清除定時器了。
以上就是我對定時器的一些簡單想法,希望大家能夠喜歡。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容