- setTimeout(function,time)是超時(shí)調(diào)用帅韧,即在時(shí)間大于等于time后調(diào)用function
- setInterval(function,time)是間歇調(diào)用啃勉,每隔time調(diào)用一次function
setInterval有一個(gè)問(wèn)題就是:
如果定時(shí)器的function的運(yùn)行時(shí)間大于了time,導(dǎo)致還沒(méi)有執(zhí)行完成淮阐,下一個(gè)function就添加到了隊(duì)列中,最后function就連續(xù)執(zhí)行了多次泣特,中間沒(méi)有間隔時(shí)間。
下面使用setTimeout來(lái)代替setInterval:
setTimeout(function(){
console.log(1);
setTimeout(arguments.callee,500);
},500);
這樣就能保證前一個(gè)定時(shí)器中的function執(zhí)行完之前群扶,不會(huì)向隊(duì)列中插入新的定時(shí)器,并且在前一個(gè)定時(shí)器執(zhí)行完后竞阐,能夠等待的時(shí)間間隔。