1. 程式人生 > >setTimeout 去實現 setInterval

setTimeout 去實現 setInterval

如何用setTimeout去實現setInterval

setTimeout:

   用於在指定的毫秒數後呼叫函式或計算表示式,**只執行一次**

//例:
setTimeout(function(){
    //do something
},interval)

setInterval:

   按照指定的週期(以毫秒計)來呼叫函式或計算表示式,**會不停地執行,直到 clearInterval() 被呼叫或視窗被關閉**

//例:
var intervalId = setInterval(function()
{
do something if(something has finished){ //清除計時器 clearInterval(intervalId); } } },interval)

模擬setInterval

1、為什麼要求模擬 setInterval?
   JavaScript是執行在單執行緒機制中的,當我們使用 setInterval 去完成一段程式碼,而這段程式碼的執行時間會超過你所設定的函式執行時間間隔interval時,這可能會導致多個定時器的程式碼執行時間可能會比預期小又或者某些執行間隔會被跳過。
2、如何用 setTimeout 模擬?

setTimeout(function(){
    do something
    if(something has not finished){
        setTimeout(arguments.callee,interval);
    }
},interval)