1. 程式人生 > >setTimeout代替setInterval的寫法以及setInterval的弊端以及越來越快的解決辦法

setTimeout代替setInterval的寫法以及setInterval的弊端以及越來越快的解決辦法

平常經常遇到的一個問題,很多人想間隔時間執行一些事件的時候,第一時間就會想到用setInterval,但是setInterval村子啊不少弊端哦。

弊端1:setInterval會無視錯誤程式碼,即使程式碼報錯,還是會一直執行下去。

弊端2:setInterval會無視網路延遲,很多人會有需求需要1秒更新一次資料,然後就有可能會定時傳送請求給伺服器請求,假如伺服器請求資料發生延遲等等情況的時候,setInterval不會等到請求資料完之後才去去執行下一次請求,他會在當你發生第一次請求的時候就已經開始計時,並且無論有沒有請求完成,只有時間一到下一秒的時候,就會再次傳送請求。很容造成請求堵塞,或者渲染堵塞,嚴重的會之間卡死。

弊端3:很多時候越跑越快的問題。

解決方案:使用setTimeout和遞迴(自我呼叫)

例如:

使用 setInterval 方案(不推薦使用)

setInterval(function(){
    console.log('做點什麼吧')
},1000)

使用 setTimeout 方案 (推薦使用,完美代替setInterval)

var demo = function(){
     console.log('做點什麼吧')
     setTimeout(demo, 1000)       
}