如何使用 JavaScript 立即觸發 setInterval 迴圈?
setInteral() 方法允許我們在每個特定時間段後持續觸發回撥函式。我們可以將回調函式作為第一個引數傳遞,以便在每個時間段後觸發,並將時間段(以毫秒為單位)作為第二個引數傳遞。
setInterval() 方法在第一次呼叫回撥函式時會延遲指定毫秒數。現在,問題是我們需要立即(在 0 毫秒時)第一次呼叫回撥函式,然後我們需要在給定的時間段內持續呼叫它。
示例
在下面的示例中,我們建立了 func() 函式,該函式在文件中列印訊息。我們使用了 setInterval() 方法,該方法每 3000 毫秒呼叫一次 func() 函式。
<html> <body> <h3> Using the <i> setInteral() </i> method to invoke the particular function continuosly </h3> <div id = "output"> </div> <script> let output = document.getElementById('output'); output.innerHTML += "Please wait ...." + "<br>"; function func() { output.innerHTML += "The func() function is invoked!" + "<br>"; } setInterval(func, 3000); </script> </body> </html>
在輸出中,使用者可以觀察到 setInteraval() 方法在第一次呼叫 func() 函式時會延遲 3000 毫秒。
使用者可以按照以下方法在第一次呼叫 func() 函式時延遲 0 毫秒。
第一次呼叫函式,然後使用 setInterval() 方法
使用 setInterval() 方法在第一次呼叫函式時不延遲的一種方法是先呼叫一次函式。
當我們第一次呼叫函式時,它會在第 0 毫秒執行。之後,setInterval() 方法會在特定時間段後持續執行該函式。
語法
使用者可以按照以下語法在使用 setInterval() 方法時在第一次呼叫函式時不延遲。
func_name() setInterval(func_name, 1000);
在上面的語法中,我們第一次呼叫了 func_name() 函式,並在每次呼叫後延遲 1000 毫秒。
示例
在下面的示例中,func() 函式列印我們使用 setInterval() 方法每 1000 毫秒呼叫一次的訊息。為了在第一次呼叫函式時不延遲,我們第一次呼叫該函式,然後使用 setInteral() 方法呼叫該函式。
<html> <body> <h3> Invoking the function for the first time and, after that, using the setInteral() method to invoke the particular function continuously. </h3> <div id = "output"> </div> </body> <script> let output = document.getElementById('output'); function func() { output.innerHTML += "The func() function is invoked!" + "<br>"; } func() setInterval(func, 1000); </script> </html>
在 setInterval() 方法中建立一個立即執行函式
立即執行函式會在我們建立它後立即執行函式表示式。因此,我們可以使用立即執行函式表示式在第一次呼叫函式時不延遲。我們還可以在函式內部使用 setInterval() 方法以特定間隔執行函式。
語法
使用者可以按照以下語法使用立即執行函式表示式在使用 setInterval() 方法時執行函式而不延遲。
(function name() { setInterval(name, 3000); })()
在上面的語法中,我們在括號中編寫了函式表示式,然後編寫了開括號和閉括號以立即呼叫該函式。
示例 3
下面的示例建立一個測試函式,該函式使用 setInterval() 方法在每個間隔後呼叫。我們將 test() 函式編寫為立即執行函式表示式,並在函式內部使用 setInterval() 方法,每 3000 毫秒呼叫一次 test() 函式。
我們可以觀察到輸出,即 test 函式在重新整理網頁時第一次在第 0 毫秒呼叫,然後每 3000 毫秒呼叫一次。
<html> <body> <h3> Using the immediately invoked function expression to invoke the function without delay for the first time while using the setInteral() method </h3> <div id = "output"> </div> <script> let output = document.getElementById('output'); (function test() { output.innerHTML += "The test() function is invoked!" + "<br>"; setInterval(test, 3000); })() </script> </body> </html>
使用者學習瞭如何在第一次呼叫 setInterval() 方法中使用的函式時不延遲。使用者可以第一次呼叫函式,也可以使用立即執行函式表示式。
建議第一次呼叫函式,而不是使用立即執行函式表示式,因為它會遞迴呼叫函式。在某些間隔之後,當我們在其中使用 setInterval() 方法時,立即執行函式表示式會無限次呼叫該函式。