setinterval(code,msNum)方法在之前淺學(xué)javascript的時(shí)候有學(xué)到過,當(dāng)時(shí)老師因?yàn)榍疤崾侵v定時(shí)器,所以重點(diǎn)講解了setinterval方法。對(duì)于setTimeout方法只是有提一下。這也滋生了我的懶惰;"隨遇而安"的態(tài)度讓我沒有去看下兩個(gè)的差別到底在哪里?
直到今天在看一段代碼的時(shí)候,剛好看到了setTimeout(),突然就懵圈了。于是在網(wǎng)上一陣陣的尋找;似乎找到了這么點(diǎn)眉目,于是今天想把它記錄下來(lái)。首先setTimeout是延時(shí)執(zhí)行,并且只執(zhí)行一次。而setInterval是每間隔多長(zhǎng)時(shí)間執(zhí)行一次里面的代碼塊。這是它倆的最基本的區(qū)別。那么setTimeout居然在現(xiàn)在的很多實(shí)現(xiàn)中居然也有充當(dāng)setInterval的角色。它又是如何做到的?這個(gè)就需要知道一點(diǎn)函數(shù)遞歸的知識(shí)了。想要讓setTimeout也執(zhí)行多次。需要將setTimeout放在它所執(zhí)行的函數(shù)中進(jìn)行無(wú)限遞歸。舉個(gè)小例子:
? ? function example(){
.....//功能代碼
var timer=setTimeout(example,2000);
? ? }
這樣setTimeout就會(huì)無(wú)限的執(zhí)行下去,直到clearTimeout(timer)就結(jié)束。它實(shí)現(xiàn)效果類似于下面這段代碼。
function example(){
.....//功能代碼
}
setInterval(example,2000);
恩,想記錄的關(guān)于這兩者的小小知識(shí)點(diǎn)就這么多。還有更高深的待學(xué)懂了再來(lái)補(bǔ)充。