1. 程式人生 > >settimeout和settimeinterval的區別和應用實踐

settimeout和settimeinterval的區別和應用實踐

這兩個方法都可以用來在固定的時間段後去執行一段javascirpt程式碼,不過兩者各有各的應用場景。

  實際上,setTimeout和setInterval的語法相同。它們都有兩個引數,一個是將要執行的程式碼字串,還有一個是以毫秒為單位的時間間隔,當過了那個時間段之後就將執行那段程式碼。

  不過這兩個函式還是有區別的,setInterval在執行完一次程式碼之後,經過了那個固定的時間間隔,它還會自動重複執行程式碼,而setTimeout只執行一次那段程式碼。

下面看下程式碼,這是settimeout的設定方式先了解一下 首先我們要明白兩個計時器的書寫規範,就是包含兩個引數,第一個是需要執行的函式,第二個是以毫秒為單位的計時單位,


function showTime()
{
    var today = new Date();
    alert("The time is: " + today.toString());
    setTimeout("showTime()",
3000);
}

showTime();

下面是settimeinterval的設定方式

setInterval("showTime()", 3000);
function showTime()
{
    var today = new Date();
    alert("The time is: " + today.toString());
}

22下面是兩種計時器的區別和應用場景

這兩種方法可能看起來非常像,而且顯示的結果也會很相似,不過兩者的最大區別就是,

setTimeout方法不會每隔5秒鐘就執行一次showTime函式,它是在每次呼叫setTimeout後過5秒鐘再去執行showTime函式。因為setTimeout需要程式執行到函式前才會執行該函式。。。。這意味著假如showTime函式的主體部分需要2秒鐘執行完,那麼整個函式則要每7秒鐘才執行一次

。而setInterval卻沒有被自己所呼叫的函式所束縛,它只是簡單地每隔一定時間就重複執行一次那個函式。

333使用場景::::如果要求在每隔一個固定的時間間隔後就精確地執行某動作,那麼最好使用setInterval,而如果不想由於連續呼叫產生互相干擾的問題,尤其是每次函式的呼叫需要繁重的計算以及很長的處理時間,那麼最好使用setTimeout。

444清空定時器

我們可以吧定時器用一個變數封裝起來 

var timer=setInterval("showTime()", 3000);

然後給一個事件觸發器,單擊會暫停,雙擊會繼續執行函式

html:<button id="bb">點選暫停雙擊執行</button>

var stopTim = document.getElementById("bb");
attachEventListener(stopTim, "click", stopGoal, false);
function stopGoal()
{
   clearInterval(timer);
}
attachEventListener(stopTim, "dbclick", startGoal, false);
function stopGoal()
{
   setInterval("showTime()", 3000);
}



相關推薦

spring classpath:classpath*:區別實際應用

classpath:和classpath*:的含義 classpath: :表示從類路徑中載入資源,classpath:和classpath:/是等價的,都是相對於類的根路徑。資原始檔庫標準的在檔案系統中,也可以在JAR或ZIP的類包中。 classpath*::假設多個JAR包或檔

MybatisHibernate區別應用場景

hibernate: 是一個標準的ORM框架(物件關係對映)。入門門檻較高,不需要程式寫sql語句,sql語句自動生產了。 特點: 對sql的優化比較困難。 Hibernate對物件的維護和快取要比MyBatis好,對增刪改查的物件的維護要方便。 Hibernate資料庫移植性很好,MyB

NPM依賴包版本號 區別及最佳實踐

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                     你會發現很多專案的依賴包版本號前面會加上~,或者是^,以Angular2為例: 那麼~和^的作用和區別是什麼呢?~會匹配最近的小版本依賴包,比如~1.

mybatis 中 #{} ${} 的區別應用場景

一、#{} 和 ${} 詳解 動態 sql 是 mybatis 的主要特性之一,在 mapper 中定義的引數傳到 xml 中之後,在查詢之前 mybatis 會對其進行動態解析。mybatis 為我們提供了兩種支援動態 sql 的語法:#{} 以及 ${}

抽象類介面區別應用場景

區別如下: 1.抽象類是對類的抽象(包括了屬性和對應的行為). 介面是對某一個行為動作的抽象。 2.抽象類只能單繼承,介面可以實現多繼承。 3.介面中定義的方法不能實現,即使不顯示的將方法宣告為public,他們也是 public。 抽象類中的方法可以

settimeout、setinterval區別相互模擬

前幾天翻書,看到“避免雙重求值”一節時有提到settimeout()、setinterval() 建議傳入函式而不是字串以作為第一個引數,所以這裡總結一下settimeout()和setinterval()的區別,以及它們之間的相互模擬。  setTimeout(): 方法用

BeanFactoryPostProcessorBeanPostProcessor區別應用場景

spring啟動初始化類順序 按照xml配置檔案中類的定義順序載入類並建立類的例項。 假設當前要載入X類,則先執行X的static塊。如果此時X的父類Y還沒有載入,則先查詢配置檔案來載入Y,執行Y的

NPM依賴包版本號~^的區別及最佳實踐

你會發現很多專案的依賴包版本號前面會加上~,或者是^,以Angular2為例: 那麼~和^的作用和區別是什麼呢? ~會匹配最近的小版本依賴包,比如~1.2.3會匹配所有1.2.x版本,但是不包括1.3.0 ^會匹配最新的大版本依賴包,比如^1.2.3會

jettytomcat區別應用場景

Jetty更滿足公有云的分散式環境的需求,而Tomcat更符合企業級環境 Jetty更符合GAE(Google App Engine, 是 Google 管理的資料中心中用於 WEB 應用程式的開發和託管的平臺) 的需求,  即雲環境的需求,亦分散式環境的需求。  1

知識點 - python 裝飾器@staticmethod@classmethod區別使用

定義 整潔 參數 sel spa elf pri Go assm 1.通常來說,我們使用一個類的方法時,首先要實例化這個類,再用實例化的類來調用其方法 class Test(object): """docstring for Test""" def

hashCode() equals() 區別作用(轉)

person set集合 static out fin 解決 詳細 返回 art 出處:https://www.jianshu.com/p/5a7f5f786b75 本章的內容主要解決下面幾個問題: 1 equals() 的作用是什麽? 2 equal

Java之JSONObject存取值以及HashMap區別, optString()getString()區別他的遍歷方式

結論: 1.JSONObject和HashMap用法上是一樣的,用put()方法存對於的Key-values鍵值對,取可用optString(key)和getString(key),get(key),存入的是什麼型別,取出來的時候就是什麼型別 2**.optString()在沒找到k

KEIL、uVisionMDK區別聯絡

--------------------------------------------- -- 時間:2018-11-26 -- 建立人:Ruo_Xiao -- 郵箱:[email protected] ----------------------------------------

Java 的equals()方法 == 的區別聯絡

淺談Java中的equals和==  在初學Java時,可能會經常碰到下面的程式碼: String str1 = new String("hello"); String str2 = new String("hello"); System.out.print

關於unionjoin區別聯絡

union和join是需要聯合多張表時常見的關聯詞,具體概念我就不說了,想知道上網查就行,因為我也記不準確。 先說差別:union對兩張表的操作是合併資料條數,等於是縱向的,要求是兩張表字段必須是相同的(Schema of both sidesof union should match.)。也就

ServiceIntentService 區別使用

背景 最近開發遇到一個小小的問題,因為沒怎麼用過IntentService ,所以對其生命週期也不很瞭解,還有工作原理。 intentService 詳解 intentService ——>> StartService 第一次 intent

G++C++區別評測注意事項

G++和C++的區別和評測注意事項 下面摘抄自網際網路 G++ 首先更正一個概念,C++是一門計算機程式語言,G++不是語言,是一款編譯器中編譯C++程式的命令而已。 那麼他們之間的區別是什麼? 在提交題目中的語言選項裡,G++和C++都代表編譯的方式。準確地說

BTCBCH 區別聯系?

升級問題 fff 手續費 升級 現在 風險 個人電腦 電網 pan 在比特幣剛剛出現的時期,中本聰對區塊的大小限制在1M。這種限制既保障性能較弱的個人電腦能夠參與其中,同時也起到了防止攻擊者讓比特幣網絡超載的風險發生,畢竟那時系統還很脆弱。在1M的限制下,10分鐘一個區塊最

SparkSQL(8):DataSetDataFrame區別轉換

1.概念: (1)DataSet和RDD   大資料的框架許多都要把記憶體中的資料往磁盤裡寫,所以DataSet取代rdd和dataframe。因為,現階段底層序列化機制使用的是java的或者Kryo的形式。但是,java序列化出來的資料很大,影響儲存Kryo對於小資料量

網路---HttpsHttp區別對稱加密非對稱加密

Https和Http區別 眾所周知,WEB服務存在http和https兩種通訊方式,http預設採用80作為通訊埠,對於傳輸採用不加密的方式,https預設採用443,對於傳輸的資料進行加密傳輸 目前主流的網站基本上開始預設採用HTTPS作為通訊方式,一切的考慮都基於對安全的要求,那麼如何對