setTimeout和setInterval的區別(面試題)


settimeout和setinterval區別

setTimeout(表達式,時間)  =>  是指延遲指定時間后才調用函數,調用次數僅一次;

setInterval(表達式,時間)    => 是指每隔指定的時間就指定表達式,次數不為一,好比設置時間為四秒,每隔四秒就執行眨眼這個操作,循環操作下去;

業務場景的區別

·setTimeout用於延遲執行某方法或功能。

·setInterval則一般用於刷新表單,對於一些表單的假實時指定時間刷新同步。

注:

setInterval() 方法會不停地調用函數,直到 clearInterval() 被調用或窗口被關閉。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的參數。

實例演示

<script>

    setTimeout("alert('主人, 三秒鍾已到了')", 3000 )

</script>

  打開上面代碼網頁,三秒后就會出現一個 alert 對話盒,提示“主人, 三秒鍾已到了”

setInterval()實例演示

<script>
setInterval("showTime()", 5000);
function showTime()
{
    var today = new Date();
    alert("The time is: " + today.toString());
}

</script>

  注:

盡量不要用setInterval()

原因如下:

(1)setInterval()無視代碼錯誤

setInterval有個討厭的習慣,即對自己調用的代碼是否報錯這件事漠不關心。換句話說,如果setInterval執行的代碼由於某種原因出了錯,它還會持續不斷(不管不顧)地調用該代碼。

(2)setInterval無視網絡延遲

假設你每隔一段時間就通過Ajax輪詢一次服務器,看看有沒有新數據(注意:如果你真的這么做了,那恐怕你做錯了;建議使用“補償性輪詢”(backoff polling))。而由於某些原因(服務器過載、臨時斷網、流量劇增、用戶帶寬受限,等等),你的請求要花的時間遠比你想象的要長。但setInterval不在乎。它仍然會按定時持續不斷地觸發請求,最終你的客戶端網絡隊列會塞滿Ajax調用。

(3)setInterval不保證執行

與setTimeout不同,你並不能保證到了時間間隔,代碼就准能執行。如果你調用的函數需要花很長時間才能完成,那某些調用會被直接忽略。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM