0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

settimeout和setinterval有哪些區(qū)別?

工程師鄧生 ? 來源:未知 ? 作者:劉芹 ? 2023-12-09 14:32 ? 次閱讀

settimeout和setinterval有哪些區(qū)別?

setTimeout和setInterval都是JavaScript中的定時器函數(shù),用于在指定的時間間隔后執(zhí)行一段代碼。盡管它們在某些方面相似,但還是存在一些重要的區(qū)別。

區(qū)別一:執(zhí)行方式

setTimeout是在一定時間間隔后執(zhí)行一次指定的函數(shù)。它接受兩個參數(shù),第一個參數(shù)是要執(zhí)行的函數(shù),第二個參數(shù)是延遲的毫秒數(shù)。例如,下面的代碼將在1000毫秒后執(zhí)行一次函數(shù):

setTimeout(function() {
// 代碼邏輯
}, 1000);

setInterval是每隔一定時間間隔重復執(zhí)行特定的函數(shù)。它也接受兩個參數(shù),第一個參數(shù)是要執(zhí)行的函數(shù),第二個參數(shù)是間隔的毫秒數(shù)。例如,下面的代碼將每隔1000毫秒執(zhí)行一次函數(shù):

setInterval(function() {
// 代碼邏輯
}, 1000);

區(qū)別二:執(zhí)行次數(shù)

setTimeout只會執(zhí)行一次指定的函數(shù),而setInterval會一直重復執(zhí)行指定的函數(shù),直到被取消。

如果我們只需要在一定時間延遲后執(zhí)行一次代碼塊,那么setTimeout是更合適的選擇。如果我們需要周期性地執(zhí)行一段代碼,那么setInterval是更適合的選擇。

區(qū)別三:定時器的取消

setTimeout可以通過clearTimeout函數(shù)取消執(zhí)行。這個函數(shù)接受一個參數(shù),即要取消的定時器的標識符。例如,下面的代碼定義了一個定時器,并使用clearTimeout函數(shù)取消了它的執(zhí)行:

var timer = setTimeout(function() {
// 代碼邏輯
}, 1000);

// 取消定時器的執(zhí)行
clearTimeout(timer);

而setInterval可以通過clearInterval函數(shù)取消執(zhí)行。與clearTimeout函數(shù)類似,clearInterval函數(shù)也接受一個參數(shù),即要取消的定時器的標識符。

var timer = setInterval(function() {
// 代碼邏輯
}, 1000);

// 取消定時器的執(zhí)行
clearInterval(timer);

使用setTimeout和setInterval時,我們需要注意及時取消定時器的執(zhí)行,以免出現(xiàn)內(nèi)存泄漏或不必要的性能開銷。

區(qū)別四:代碼執(zhí)行順序

當使用setTimeout時,代碼的執(zhí)行可能會受到其他代碼的干擾。在下面的示例中,我們使用setTimeout函數(shù)將一段代碼推遲了1000毫秒執(zhí)行:

console.log("開始");

setTimeout(function() {
console.log("執(zhí)行");
}, 1000);

console.log("結束");

在這種情況下,控制臺輸出的順序可能是"開始"->"結束"->"執(zhí)行",因為setTimeout函數(shù)將代碼推遲了1000毫秒執(zhí)行。如果需要確保代碼按照期望的順序執(zhí)行,可以將后續(xù)的代碼放在setTimeout函數(shù)的回調(diào)函數(shù)中。

setInterval則沒有這個問題,因為它會按照指定的時間間隔重復執(zhí)行代碼。

總結起來,setTimeout和setInterval的主要區(qū)別在于執(zhí)行方式、執(zhí)行次數(shù)、定時器的取消和代碼執(zhí)行順序。兩者都是JavaScript中常用的定時器函數(shù),根據(jù)需求選擇適合的定時器函數(shù)能夠更好地實現(xiàn)代碼邏輯。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 定時器
    +關注

    關注

    23

    文章

    3218

    瀏覽量

    113665
  • javascript
    +關注

    關注

    0

    文章

    515

    瀏覽量

    53656
收藏 人收藏

    評論

    相關推薦

    js基礎之setTimeoutsetInterval原理分析

    setTimeoutsetInterval概述 setTimeoutsetInterval是JavaScript引擎提供的兩個定時器方法,分別用于函數(shù)的延時執(zhí)行和循環(huán)調(diào)用。前者的主
    的頭像 發(fā)表于 09-19 15:10 ?339次閱讀
    js基礎之<b class='flag-5'>setTimeout</b>與<b class='flag-5'>setInterval</b>原理分析

    線路板的層和階什么區(qū)別?

    線路板的層和階什么區(qū)別
    的頭像 發(fā)表于 02-23 17:27 ?522次閱讀

    SPI和QSPI什么區(qū)別?

    SPI和QSPI什么區(qū)別?
    發(fā)表于 02-06 06:12

    大電容和小電容什么區(qū)別

    大電容和小電容什么區(qū)別? 大電容和小電容之間的區(qū)別主要包括以下幾個方面:容量、尺寸、用途、性能、穩(wěn)定性以及價格等。 首先,容量是大電容和小電容最直觀的區(qū)別之一。大電容通常具有較大的容
    的頭像 發(fā)表于 02-04 09:32 ?7105次閱讀

    電源中的EMI和EMC什么區(qū)別?

    電源中的EMI和EMC什么區(qū)別? 電源中的EMI和EMC是與電磁干擾相關的兩個概念,盡管它們一些相似之處,但它們不同的含義和應用領域。在本篇文章中,我們將詳細探討電源中的EMI和
    的頭像 發(fā)表于 01-19 11:47 ?1185次閱讀

    hdi板與普通pcb什么區(qū)別

    hdi板與普通pcb什么區(qū)別
    的頭像 發(fā)表于 12-28 10:26 ?2481次閱讀

    pcb軟板和硬板什么區(qū)別

    pcb軟板和硬板什么區(qū)別
    的頭像 發(fā)表于 12-19 10:01 ?1479次閱讀

    光耦與光繼電器區(qū)別?

    光耦與光繼電器區(qū)別?
    的頭像 發(fā)表于 12-13 13:59 ?721次閱讀
    光耦與光繼電器<b class='flag-5'>有</b>何<b class='flag-5'>區(qū)別</b>?

    RDMA和TCP/IP什么區(qū)別

    在分布式存儲網(wǎng)絡中,我們使用的協(xié)議RoCE、Infiniband(IB)和TCP/IP。其中RoCE和IB屬于RDMA (RemoteDirect Memory Access)技術,他和傳統(tǒng)的TCP/IP什么區(qū)別呢,接下來我
    的頭像 發(fā)表于 11-30 09:19 ?1336次閱讀
    RDMA和TCP/IP<b class='flag-5'>有</b>什么<b class='flag-5'>區(qū)別</b>

    異構集成 (HI) 與系統(tǒng)級芯片 (SoC) 區(qū)別?

    異構集成 (HI) 與系統(tǒng)級芯片 (SoC) 區(qū)別
    的頭像 發(fā)表于 11-29 15:39 ?1424次閱讀
    異構集成 (HI) 與系統(tǒng)級芯片 (SoC) <b class='flag-5'>有</b>何<b class='flag-5'>區(qū)別</b>?

    薄膜電阻和厚膜電阻什么區(qū)別

    電子發(fā)燒友網(wǎng)站提供《薄膜電阻和厚膜電阻什么區(qū)別.doc》資料免費下載
    發(fā)表于 11-21 09:24 ?0次下載
    薄膜電阻和厚膜電阻<b class='flag-5'>有</b>什么<b class='flag-5'>區(qū)別</b>

    pcb阻燃和非阻燃哪些區(qū)別

    pcb阻燃和非阻燃哪些區(qū)別
    的頭像 發(fā)表于 11-08 14:24 ?1798次閱讀

    FlexCAN與普通的CAN區(qū)別嗎?CAN FD又CAN什么區(qū)別?

    FlexCAN與普通的CAN區(qū)別嗎,CAN FD又CAN什么區(qū)別。
    發(fā)表于 11-08 08:30

    合金電阻與貼片電阻什么區(qū)別?你知道合金電阻多少個作用嗎?

    合金電阻與貼片電阻什么區(qū)別?你知道合金電阻多少個作用嗎? 合金電阻與貼片電阻是電子元件中常用的兩種電阻。它們在電路中起到了不同的作用。本文將深入探討這兩種電阻的區(qū)別,還會介紹合金電
    的頭像 發(fā)表于 10-29 11:21 ?1622次閱讀

    單片機IO配置不同速度區(qū)別?

    單片機IO配置不同速度區(qū)別?
    的頭像 發(fā)表于 10-25 16:42 ?563次閱讀
    單片機IO配置不同速度<b class='flag-5'>有</b>啥<b class='flag-5'>區(qū)別</b>?