JavaScript SetInterval與setTimeout使用方法詳解
更新時(shí)間:2013年11月15日 09:58:22 作者:
本文講解了JavaScript SetInterval與setTimeout的區(qū)別,并用代碼示例演示了使用方法
setTimeout和setInterval的語(yǔ)法相同。它們都有兩個(gè)參數(shù),一個(gè)是將要執(zhí)行的代碼字符串,還有一個(gè)是以毫秒為單位的時(shí)間間隔,當(dāng)過(guò)了那個(gè)時(shí)間段之后就將執(zhí)行那段代碼。
不過(guò)這兩個(gè)函數(shù)還是有區(qū)別的,setInterval在執(zhí)行完一次代碼之后,經(jīng)過(guò)了那個(gè)固定的時(shí)間間隔,它還會(huì)自動(dòng)重復(fù)執(zhí)行代碼,而setTimeout只執(zhí)行一次那段代碼。
區(qū)別:
window.setTimeout("function",time);//設(shè)置一個(gè)超時(shí)對(duì)象,只執(zhí)行一次,無(wú)周期
window.setInterval("function",time);//設(shè)置一個(gè)超時(shí)對(duì)象,周期='交互時(shí)間'
停止定時(shí):
window.clearTimeout(對(duì)象) 清除已設(shè)置的setTimeout對(duì)象
window.clearInterval(對(duì)象) 清除已設(shè)置的setInterval對(duì)象
PerRefresh();
function PerRefresh() {
var today = new Date();
alert("The time is: " + today.toString());
setTimeout("showTime()", 5000);
}
一旦調(diào)用了這個(gè)函數(shù)PerReflesh,那么就會(huì)每隔5秒鐘就顯示一次時(shí)間
setInterval("PerRefresh()", 5000);
function PerRefresh() {
var today = new Date();
alert("The time is: " + today.toString());
}
而setInterval卻沒有被自己所調(diào)用的函數(shù)所束縛,它只是簡(jiǎn)單地每隔一定時(shí)間就重復(fù)執(zhí)行一次那個(gè)函數(shù)。
只要調(diào)用了setInterval("PerRefresh()", 5000)此函數(shù),那么每隔5秒鐘就會(huì)執(zhí)行PerRefresh這個(gè)函數(shù)。
如果要求在每隔一個(gè)固定的時(shí)間間隔后就精確地執(zhí)行某動(dòng)作,那么最好使用setInterval,而如果不想由于連續(xù)調(diào)用產(chǎn)生互相干擾的問(wèn)題,尤其是每次函數(shù)的調(diào)用需要繁重的計(jì)算以及很長(zhǎng)的處理時(shí)間,那么最好使用setTimeout。
setInterval 不斷地執(zhí)行指定代碼直到調(diào)用clearInterval清除定時(shí)器對(duì)象
setTimeout 執(zhí)行一次指定代碼,使用clearTimeout清除定時(shí)器對(duì)象
setInterval和setTimeout都返回定時(shí)器對(duì)象標(biāo)識(shí)符,用于clearInterval和clearTimeout調(diào)用
不過(guò)這兩個(gè)函數(shù)還是有區(qū)別的,setInterval在執(zhí)行完一次代碼之后,經(jīng)過(guò)了那個(gè)固定的時(shí)間間隔,它還會(huì)自動(dòng)重復(fù)執(zhí)行代碼,而setTimeout只執(zhí)行一次那段代碼。
區(qū)別:
window.setTimeout("function",time);//設(shè)置一個(gè)超時(shí)對(duì)象,只執(zhí)行一次,無(wú)周期
window.setInterval("function",time);//設(shè)置一個(gè)超時(shí)對(duì)象,周期='交互時(shí)間'
停止定時(shí):
window.clearTimeout(對(duì)象) 清除已設(shè)置的setTimeout對(duì)象
window.clearInterval(對(duì)象) 清除已設(shè)置的setInterval對(duì)象
復(fù)制代碼 代碼如下:
PerRefresh();
function PerRefresh() {
var today = new Date();
alert("The time is: " + today.toString());
setTimeout("showTime()", 5000);
}
一旦調(diào)用了這個(gè)函數(shù)PerReflesh,那么就會(huì)每隔5秒鐘就顯示一次時(shí)間
復(fù)制代碼 代碼如下:
setInterval("PerRefresh()", 5000);
function PerRefresh() {
var today = new Date();
alert("The time is: " + today.toString());
}
而setInterval卻沒有被自己所調(diào)用的函數(shù)所束縛,它只是簡(jiǎn)單地每隔一定時(shí)間就重復(fù)執(zhí)行一次那個(gè)函數(shù)。
只要調(diào)用了setInterval("PerRefresh()", 5000)此函數(shù),那么每隔5秒鐘就會(huì)執(zhí)行PerRefresh這個(gè)函數(shù)。
如果要求在每隔一個(gè)固定的時(shí)間間隔后就精確地執(zhí)行某動(dòng)作,那么最好使用setInterval,而如果不想由于連續(xù)調(diào)用產(chǎn)生互相干擾的問(wèn)題,尤其是每次函數(shù)的調(diào)用需要繁重的計(jì)算以及很長(zhǎng)的處理時(shí)間,那么最好使用setTimeout。
setInterval 不斷地執(zhí)行指定代碼直到調(diào)用clearInterval清除定時(shí)器對(duì)象
setTimeout 執(zhí)行一次指定代碼,使用clearTimeout清除定時(shí)器對(duì)象
setInterval和setTimeout都返回定時(shí)器對(duì)象標(biāo)識(shí)符,用于clearInterval和clearTimeout調(diào)用
相關(guān)文章
Js從頭學(xué)起(基本數(shù)據(jù)類型和引用類型的參數(shù)傳遞詳細(xì)分析)
Js中所有函數(shù)的參數(shù)傳遞都是按值傳遞的,也就是把函數(shù)外面的值復(fù)制給函數(shù)內(nèi)部的參數(shù),就和把值從一個(gè)變量復(fù)制到另一個(gè)變量一樣。下面舉幾個(gè)特別的例子2012-02-02
JavaScript中匿名、命名函數(shù)的性能測(cè)試
這篇文章主要介紹了JavaScript中匿名、命名函數(shù)的性能測(cè)試,簡(jiǎn)單來(lái)講匿名即沒有名字的函數(shù),它和命名函數(shù)相比性能如何呢,本文即是對(duì)它們性能的測(cè)試,需要的朋友可以參考下2014-09-09
深入學(xué)習(xí)JavaScript中的原型prototype
這篇文章主要介紹了深入學(xué)習(xí)JavaScript中的原型prototype,是JavaScript入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08
jQuery入門問(wèn)答 整理的幾個(gè)常見的初學(xué)者問(wèn)題
大家可能看到了,我已經(jīng)將過(guò)去寫的兩篇jQuery的教程刪掉了,因?yàn)楦郊淮嬖诹说鹊葐?wèn)題,所以刪除了,從今天開始我就寫jQuery教程第二版了!希望大家能夠支持我!2010-02-02
javascript學(xué)習(xí)筆記(九) js對(duì)象 設(shè)計(jì)模式
javascript學(xué)習(xí)筆記之js對(duì)象 設(shè)計(jì)模式介紹,需要的朋友可以參考下2012-06-06
溫故知新——JavaScript中的字符串連接問(wèn)題最全總結(jié)(推薦)
這篇文章主要介紹了JS中的字符串連接問(wèn)題,ECMAScript 中最常見的一個(gè)問(wèn)題是字符串連接的性能。在調(diào)用 join() 方法時(shí)才會(huì)發(fā)生連接操作,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08

