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)眉目,于是今天想把它記錄下來柏卤。首先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)行無限遞歸该园。舉個(gè)小例子:
? ? function example(){
.....//功能代碼
var timer=setTimeout(example,2000);
? ? }
這樣setTimeout就會(huì)無限的執(zhí)行下去,直到clearTimeout(timer)就結(jié)束酸舍。它實(shí)現(xiàn)效果類似于下面這段代碼。
function example(){
.....//功能代碼
}
setInterval(example,2000);
恩里初,想記錄的關(guān)于這兩者的小小知識(shí)點(diǎn)就這么多啃勉。還有更高深的待學(xué)懂了再來補(bǔ)充。