首页 > 建站教程 > JS、jQ、TS >  用setTimeout调用函数本身来模拟setInterval正文

用setTimeout调用函数本身来模拟setInterval

我们都知道setTimeout相当于定时炸弹,一旦时间到了,就会执行一次,然后就不执行了。而setInterval则不是,它是时间到,马上执行一次,然后等待下次时间到,再执行,除非清除了本定时器,否则永远不会停下来。如下:
var i=0,j=0;
function timer(){
    i++;
    console.log("setTimeout执行只一次:"+i);
}
setTimeout(timer,1000);  //或者 setTimeout(function(){timer()},1000);
function timer2(){
    j++;
    console.log("setInterval会不断的执行:"+j);
}
setInterval(timer2,1000);  //或者setInterval(function(){timer2()},1000);

下面的代码则用setTimeout模拟了setInterval。当时间到,就会调用timer3,输出k,同时又一次执行了setTimeout。
var k=0;
function timer3(){
    k++;
    console.log("用setTimeout调用函数本身来模拟setInterval,不断输出:"+k);
    setTimeout(timer3,1000);  //或者 setTimeout(function(){timer3()},1000);
}
timer3();