摘要:和都返回定時(shí)器對(duì)象標(biāo)識(shí)符,用于和調(diào)用清除已設(shè)置的對(duì)象清除已設(shè)置的對(duì)象
雖然網(wǎng)上有很多兩者區(qū)別的文章,但是經(jīng)常搞混了,好記性不如爛筆頭,記錄一下。
語(yǔ)法:
setTimeout(code,millisec); setInterval(code,millisec[,"lang"])
它們都有兩個(gè)參數(shù),一個(gè)是將要執(zhí)行的代碼字符串,還有一個(gè)是以毫秒為單位的時(shí)間間隔,當(dāng)過(guò)了那個(gè)時(shí)間段之后就將執(zhí)行那段代碼。
這兩個(gè)函數(shù)的區(qū)別就在于,setInterval在執(zhí)行完一次代碼之后,經(jīng)過(guò)了那個(gè)固定的時(shí)間間隔,它還會(huì)自動(dòng)重復(fù)執(zhí)行代碼,而setTimeout只執(zhí)行一次那段代碼。
每5秒alert一次時(shí)間
var showTimes=setInterval("showTime()", 5000); function showTime() { var today = new Date(); alert("The time is: " + today.toString()); }
setTimeout也可以實(shí)現(xiàn),代碼如下:
var showTimes=null; showTime(); function showTime() { var today = new Date(); alert("The time is: " + today.toString()); showTimes=setTimeout("showTime()", 5000); }
這樣寫(xiě)是不是看起來(lái)沒(méi)有什么區(qū)別,但是setTimeout方法不會(huì)每隔5秒鐘就執(zhí)行一次showTime函數(shù),它是在每次調(diào)用setTimeout后過(guò)5秒鐘再去執(zhí)行showTime函數(shù)。這意味著如果showTime函數(shù)的主體部分需要1秒鐘執(zhí)行完,那么整個(gè)函數(shù)則要每6秒鐘才執(zhí)行一次。而setInterval卻沒(méi)有被自己所調(diào)用的函數(shù)所束縛,它只是簡(jiǎn)單地每隔一定時(shí)間就重復(fù)執(zhí)行一次那個(gè)函數(shù)。
所以這兩個(gè)函數(shù)需根據(jù)不同的情景去使用,如果需要在每隔一個(gè)固定的時(shí)間間隔后就精確地執(zhí)行某動(dòng)作,那么最好使用setInterval,而如果不想由于連續(xù)調(diào)用產(chǎn)生互相干擾的問(wèn)題,尤其是每次函數(shù)的調(diào)用需要繁重的計(jì)算以及很長(zhǎng)的處理時(shí)間,那么最好使用setTimeout。
setInterval和setTimeout都返回定時(shí)器對(duì)象標(biāo)識(shí)符,用于clearInterval和clearTimeout調(diào)用
eg:
clearTimeout(showTimes) //清除已設(shè)置的setTimeout對(duì)象 clearInterval(showTimes) //清除已設(shè)置的setInterval對(duì)象
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91220.html
摘要:關(guān)于定時(shí)器的源碼在文件中,進(jìn)入就關(guān)于定時(shí)器的一些設(shè)計(jì)解釋?zhuān)驗(yàn)槭亲龇?wù)端代碼,在內(nèi)部等大部分事件都會(huì)創(chuàng)建一個(gè)定時(shí)器,任何時(shí)間都可能存在大量的定時(shí)器任務(wù),所以設(shè)計(jì)一個(gè)高效的定時(shí)器是很有必要的。 博客文章地址 setTimeout與setInterval setTimeout 和 setInterval 是我們?cè)?javaScript 中經(jīng)常用到的定時(shí)器,setTimeout 方法用于...
摘要:和函數(shù)的同與異同都接受兩個(gè)參數(shù),一個(gè)是將要執(zhí)行的代碼塊,一個(gè)是以毫秒為單位的時(shí)間間隔,當(dāng)過(guò)了設(shè)定的時(shí)間間隔就執(zhí)行代碼塊部分。 setTimeout()和setInterval()函數(shù)的同與異:同:都接受兩個(gè)參數(shù),一個(gè)是將要執(zhí)行的代碼塊,一個(gè)是以毫秒為單位的時(shí)間間隔,當(dāng)過(guò)了設(shè)定的時(shí)間間隔就執(zhí)行代碼塊部分。異:setTimeout(codeblock, millisec)函數(shù)只執(zhí)行一次代碼...
摘要:不過(guò)兩者各有各的應(yīng)用場(chǎng)景。方法實(shí)際上,和的語(yǔ)法相同。這意味著如果函數(shù)的主體部分需要秒鐘執(zhí)行完,那么整個(gè)函數(shù)則要每秒鐘才執(zhí)行一次。不過(guò)還是有辦法可以終止和函數(shù)的執(zhí)行。 var intervalProcess = setInterval(alert(GOAL!), 3000); 這個(gè)變量命名可以在實(shí)際代碼中采用 這兩個(gè)方法都可以用來(lái)實(shí)現(xiàn)在一個(gè)固定時(shí)間段之后去執(zhí)行JavaScript。不過(guò)...
摘要:說(shuō)到中的定時(shí)器,我們肯定會(huì)想到和這兩個(gè)函數(shù)。第一個(gè)回調(diào)一執(zhí)行,又開(kāi)啟了第二個(gè),這個(gè)定時(shí)器也是期望延時(shí)之后能夠執(zhí)行它的回調(diào)函數(shù)。可以用下面的圖來(lái)概括總結(jié)上面對(duì)定時(shí)器執(zhí)行原理進(jìn)行了簡(jiǎn)要的分析,希望能夠幫助我們更深入的理解。 說(shuō)到 javascript 中的定時(shí)器,我們肯定會(huì)想到 setTimeout() 和 setInterval() 這兩個(gè)函數(shù)。本文將從 事件循環(huán)(Event Loop)...
摘要:這里是結(jié)論,將是更驚艷的那一個(gè)。瀏覽器隔一段時(shí)間像服務(wù)器發(fā)送一個(gè)請(qǐng)求,詢問(wèn)這里有沒(méi)有需要更新的消息。在響應(yīng)回來(lái)時(shí),才會(huì)繼續(xù)發(fā)出第二個(gè)請(qǐng)求。但是,顯然的,這對(duì)我們要做的事來(lái)說(shuō)并不算是什么問(wèn)題。 我們都知道的是setTimout是用來(lái)延遲一個(gè)簡(jiǎn)單的動(dòng)作的,然而,setInterval的目的是用來(lái)重復(fù)執(zhí)行某個(gè)動(dòng)作的。 然后,以上只是一半的事實(shí)。因?yàn)槿绻粋€(gè)函數(shù)需要在一個(gè)間隔時(shí)間內(nèi)重復(fù)的執(zhí)行,...
閱讀 1104·2021-10-12 10:11
閱讀 887·2019-08-30 15:53
閱讀 2301·2019-08-30 14:15
閱讀 2971·2019-08-30 14:09
閱讀 1210·2019-08-29 17:24
閱讀 984·2019-08-26 18:27
閱讀 1291·2019-08-26 11:57
閱讀 2167·2019-08-23 18:23