Js中setTimeout()和setInterval() 何時被呼叫執行的用法_基礎知識
定義
setTimeout()和setInterval()常被用來處理延時和定時任務。 setTimeout() 方法用於在指定的毫秒數後呼叫函數或計算表達式,而setInterval()則可以在每隔指定的毫秒數循環呼叫函數或表達式,直到clearInterval清除它。
從定義上我們可以看到兩個函數十分類似,只不過前者執行一次,而後者可以執行多次,兩個函數的參數也相同,第一個參數是要執行的code或句柄,第二個是延遲的毫秒數。
很簡單的定義,使用起來也很簡單,但有時候我們的程式碼並不是按照我們的想像精確時間被調用的,很讓人困惑
簡單範例
看個簡單的例子,簡單頁面在載入完兩秒後,寫下Delayed alert!
程式碼如下:
setTimeout('document.write("Delayed alert!");', 2000);複製程式碼
程式碼如下:
var num = 0;
var i = setInterval(function() {
num ;
document.write(date.getMinutes() ':' date.getSeconds() ': ' date.getMilliseconds() '
');
if (num > 10)
:38:116
:39:130
:40:144
:41:158
:42:172
:43:158
:42:172
:43:1886
:44:200
:45:214
:47:242:48:256
為什麼>
function test() {
for (var i = 0; i div.setAttribute( 'id', 'testDiv');
document.body.appendChild(div);
}
}
setInterval(test, 10) ;
var num = 0;
var i = setInterval(function() {
var date = new Date();
document.write(date.getMinutes() ' :' date.getSeconds() ':' date.getMilliseconds() '
');
if (num > 10)
我們又加入了一個定時任務,看看結果
複製程式碼
程式碼如下:
:9:222
:12:482
:16:8
:19:143
:22:631
:25:888
:28:631
:25:888
:28: 712
:34:146
:35:565
:37:406
這下效果明顯了,甚至差距都超過了3秒,而且差距很不一致。 我們可以把JavaScript想像在時間線上運作。當頁面載入的時候首先執行的是頁面生命週期後面要用的方法和變數宣告和資料處理,在這之後JavaScript進程會等待更多程式碼執行。當進程空閒的時候,下一段程式碼會被觸發
除了主JavaScript進程外,還需要一個在進程下一次空閒時執行的程式碼佇列。隨著頁面生命週期推移,程式碼會按照執行順序加入佇列,例如當按鈕被按下的時候他的事件處理程序會被加入到佇列中,並在下一個可能時間內執行。接到某個Ajax回應時,回呼函數的程式碼會被加入到佇列。 JavaScript中沒有任何程式碼是立即執行的,但一旦進程空閒就盡快執行。定時器對佇列的工作方式是當特定時間過去後將程式碼插入,這並不意味著它會馬上執行,只能表示它盡快執行。 知道了這些後,我們就能明白,如果想要精確的時間控制,是不能依賴JavaScript的setTimeout函數的。
複製程式碼
程式碼如下:
但這個方式的問題在於定時器的程式碼可能在程式碼再次被加入佇列之前還沒有執行完成,結果導致迴圈內的判斷條件不準確,程式碼多執行幾次,之間沒有停頓。不過JavaScript已經解決這個問題,當使用setInterval()時,只有在沒有該定時器的其他程式碼實例時才將定時器程式碼插入佇列。這樣確保了定時器代碼加入到佇列的最小時間間隔為指定間隔。
這樣的規則帶來兩個問題
1.1. 某些間隔會被跳過
2.2.多個定時器的程式碼執行之間的間隔可能比預期要小
為了避免這兩個缺點,我們可以使用setTimeout()來實現重複的定時器
setTimeout(function () {
//code
}, interval)
var left = parseInt(div.style.left) 5;
if (left setTimeout(arguments.callee, 50);
🎜>這段定時器程式碼每次執行的時候,把一個div向右移動5px ,當座標大於200的時候停止。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

settimeout和setInterval的區別:1、觸發時間,settimeout是一次性的,它在設定延遲時間之後執行一次函數,而setinterval是重複性的,它會以設定的時間間隔重複執行函數;2、執行次數,settimeout只執行一次,而setinterval會一直重複執行,直到被取消。

如何使用setInterval函數定時執行程式碼?在JavaScript中,setInterval函數是一個非常有用的函數,它可以定時執行一段程式碼。透過setInterval函數,我們可以在特定的時間間隔內重複執行指定的程式碼。本文將詳細介紹如何使用setInterval函數,並提供具體的程式碼範例。一、setInterval函數的基本語法如下:setInterv

Window.setInterval() 方法的基本語法是“window.setInterval(function, delay)”,function是要重複執行的函數或程式碼區塊,delay是每次執行之間的時間間隔,以毫秒為單位。此方法是JavaScript中用於定時重複執行指定函數或程式碼的方法,它的使用非常簡單,只需要傳入要執行的函數或程式碼區塊以及重複執行的時間間隔。

setinterval用法是“setInterval(function, delay);”,“function”是要執行的函數,可以是函數表達式或函數引用,“delay”是執行函數之間的時間間隔,以毫秒為單位。 setInterval是JavaScript中用來週期性執行程式碼的函數,它接受一個函數和一個時間間隔作為參數,會依照指定的時間間隔重複執行函數。

在JavaScript中使用clearTimeout函數取消setTimeout的計時器,需要具體程式碼範例在JavaScript中,setTimeout函數是用來在指定的時間延遲後執行一次特定的程式碼。而setInterval函數則是用來在指定的時間間隔內重複執行一段特定的程式碼。然而,在某些情況下,我們可能需要在定時器執行之前取消它。在這種情況下,就可以使用c

可以使用clearInterval函數來停止由setInterval函數所建立的定時器。 setInterval函數會傳回一個唯一的定時器ID,可以將此ID作為參數傳遞給clearInterval函數,以停止定時器的執行。

setInterval函數是JavaScript中的一個定時器函數,允許你設定一個間隔,並在每個間隔之後執行指定的程式碼,需要定期處理某些任務或即時更新頁面元素的情況非常有用,要注意使用setInterval時的性能和可靠性問題,並根據需要進行最佳化。

setTimeout(function,duration)-該函數在duration毫秒後呼叫函數。這適用於一次執行。讓我們來看一個例子-它等待2000毫秒,然後運行回呼函數alert('Hello')-setTimeout(function(){alert('Hello');},2000);setInterval(function,uration)-此函數在每duration毫秒後呼叫function。這可以無限次進行。讓我們來看一個例子-它每2000毫秒觸發一次警
