1. 程式人生 > >第46天:setInterval與setTimeout的區別

第46天:setInterval與setTimeout的區別

bsp mil ava 定義 form func 一起 tro 案例

js的setTimeout方法用處比較多,通常用在頁面刷新了、延遲執行了等等。今天對js的setTimeout方法做一個系統地總結。

setInterval與setTimeout的區別

說道setTimeout,很容易就會想到setInterval,因為這兩個用法差不多,但是又有區別,今天一起總結了吧!

1、setTimeout

定義和用法: setTimeout()方法用於在指定的毫秒數後調用函數或計算表達式。  

語法: setTimeout(code,millisec)  

參數: code (必需):要調用的函數後要執行的 JavaScript 代碼串。millisec(必需):在執行代碼前需等待的毫秒數

。  

提示: setTimeout() 只執行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。

2、setInterval

setInterval() 方法可按照指定的周期(以毫秒計)來調用函數或計算表達式

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

語法: setInterval(code,millisec[,"lang"])

參數: code 必需。要調用的函數或要執行的代碼串。millisec 必須。周期性執行或調用 code 之間的時間間隔,以毫秒計

返回值: 一個可以傳遞給 Window.clearInterval() 從而取消對 code 的周期性執行的值。

區別

通過上面可以看出,setTimeout和setinterval的最主要區別是:

setTimeout只運行一次,也就是說設定的時間到後就觸發運行指定代碼,運行完後即結束。如果運行的代碼中再次運行同樣的setTimeout命令,則可循環運行。(即 要循環運行,需函數自身再次調用 setTimeout())

而 setinterval是循環運行的,即每到設定時間間隔就觸發指定代碼。這是真正的定時器。

setinterval使用簡單,而setTimeout則比較靈活,可以隨時退出循環,而且可以設置為按不固定的時間間隔來運行,比如第一次1秒,第二次2秒,第三次3秒。

我個人而言,更喜歡用setTimeout多一些!

3、clearTimeout( )

我們再來一起看一下 clearTimeout( ),

clearTimout( ) 有以下語法 :  

clearTimeout(timeoutID)

要使用 clearTimeout( ), 我們設定 setTimeout( ) 時 , 要給予這 setTimout( ) 一個名稱 , 這名稱就是 timer , 我們叫停時 , 就是用這 timer來叫停 , 這是一個自定義名稱 , 但很多人就以 timer 為名。

在下面的例子 , 設定兩個timer 分別命名為 meter1 及 meter2, 如下 :

timer  ↓ meter1 = setTimeout(“count1( )”, 1000) ; meter2 = setTimeout(“count2( )”, 1000);

使用這 meter1 及 meter2 這些 timer 名稱 , 在設定 clearTimeout( ) 時 , 就可指定對哪一個 setTimeout( ) 有效 , 不會擾及另一個 setTimeout( ) 的操作。

下面是 clearTimeout()的案例

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<script>
x = 0
y = 0
function count1()
{ x = x + 1
  document.display1.box1.value = x
  meter1=setTimeout("count1()", 1000)
}
function count2()
{ y = y + 1
  document.display2.box2.value = y
  meter2=setTimeout("count2()", 1000)
}
</script> </head>
<body> 
<p> </br>
<form name="display1">
    <input type="text" name="box1" value="0" size=4 >
    <input type=button value="停止計時" onClick="clearTimeout(meter1) " >
    <input type=button value="繼續計時" onClick="count1() " >
</form>
<p>
<form name="display2">
    <input type="text" name="box2" value="0" size=4 >
    <input type=button value="停止計時" onClick="clearTimeout(meter2) " >
    <input type=button value="繼續計時" onClick="count2() " >
</form>

<script>
    count1()
    count2()
</script>
</body>
</html>

第46天:setInterval與setTimeout的區別