setInterval和setTimeout的區(qū)別

在制作網(wǎng)頁(yè)動(dòng)態(tài)效果時(shí),一定會(huì)遇到某些需求,要求某段程序等待多時(shí)時(shí)間后再開(kāi)始執(zhí)行,就像在我們的生活中一樣,待會(huì)兒再開(kāi)始做一件事。在JavaScript中主要通過(guò)定時(shí)器實(shí)現(xiàn)此類(lèi)需求,本文將對(duì)定時(shí)器做一個(gè)概括,正對(duì)setTimeout()做一個(gè)詳細(xì)用法總結(jié)。

一.setInterval與setTimeout的區(qū)別

setInterval

setInterval()方法可按照指定的周期來(lái)調(diào)用函數(shù)或者計(jì)算表達(dá)式(以毫秒為單位)

語(yǔ)法:

setInterval(函數(shù)表達(dá)式,毫秒數(shù));

setInterval()會(huì)不停的調(diào)用函數(shù),直到clearInterval()被調(diào)用或者窗口被關(guān)閉,由 setInterval()返回的ID值可用作clearInterval()方法的參數(shù)。

setTimeout

setTimeout()方法用于在指定毫秒數(shù)后再調(diào)用函數(shù)或者計(jì)算表達(dá)式(以毫秒為單位)

語(yǔ)法:

setTimeout(函數(shù)表達(dá)式,毫秒數(shù));

setTimeout()只執(zhí)行函數(shù)一次,如果需要多次調(diào)用可以使用setInterval(),或者在函數(shù)體內(nèi)再次調(diào)用setTimeout()

區(qū)別

通過(guò)以上分析可以看出,setTimeout與setInterval的主要區(qū)別是:

setTimeout()方法只運(yùn)行一次,也就是說(shuō)當(dāng)達(dá)到設(shè)定的時(shí)間后就出發(fā)運(yùn)行指定的代碼,運(yùn)行完后就結(jié)束了,如果還想再次執(zhí)行同樣的函數(shù),可以在函數(shù)體內(nèi)再次調(diào)用setTimeout(),可以達(dá)到循環(huán)調(diào)用的效果。

setInterval()是循環(huán)執(zhí)行的,即每達(dá)到指定的時(shí)間間隔就執(zhí)行相應(yīng)的函數(shù)或者表達(dá)式,是真正的定時(shí)器。

二.setTimeout()的用法

先寫(xiě)個(gè)最簡(jiǎn)單的demo,如下:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<script>

setTimeout("alert('hello')",2000);

</script>

</head>

<body>

</body>

</html>

頁(yè)面會(huì)在停留2秒之后彈出對(duì)話框,注意setTimeout不會(huì)自動(dòng)重復(fù)執(zhí)行!

當(dāng)然,setTimeout也可以執(zhí)行function,還可以不斷重復(fù)執(zhí)行!

你可以看到h1中的文本數(shù)字在一秒一秒地遞增!

更加靈活的是,你還可以指定重復(fù)執(zhí)行的次數(shù),如下:

if判斷中的數(shù)字,是用來(lái)限制重復(fù)執(zhí)行次數(shù)的條件。

三.clearTimeout()

要使用clearTimeout(),需要我們?cè)O(shè)定setTimeout()時(shí), 給予這setTimeout()一個(gè)名稱(chēng), 這名稱(chēng)就是timeoutID ,我們叫停時(shí),就是用這 timeoutID 來(lái)叫停

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<script>

var timeId=setTimeout("alert('hello')",2000);

clearTimeout(timeId);

</script>

</head>

<body>

</body>

</html>

原計(jì)劃1秒后彈出的警示框,被自然叫停了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容