利用setTimeout来实现setInterval

在Js中,当我们要在一定间隔时间内不断执行同一函数,我们可以使用setInterval函数,但setInterval在某些情况下使用时也存在一定问题。

1.不去关心回调函数是否还在运行

在某些情况下,函数可能需要比间隔时间更长的时间去完成执行。比如说是用setInterval每隔5秒对远端服务器进行轮询,网络延迟,服务器无响应以及其他因素将会阻止请求按时按成。结果会导致返回一串无必要的排成队列请求。

2.忽视错误

因为某些原因,setInterval调用的代码中会出现一个错误,但是代码并不会中止执行而是继续执行错误的代码。

3.缺乏灵活性

除了前面提到的缺点之外,我非常希望setInterval方法能有一个表明执行次数的参数而不是无休止的执行下去。

比如下面使用setInterval方法的代码:

var a = 0;

function time(){
    a++;
    if( a > 10 ){
        window.clearInterval(index);
    }
    console.log(a);
}

var index = setInterval("time()",1000);

可以使用如下setTimeout()来代替

function time(a){
    a++;
    console.log(a);
    if( a > 10 ){
        return
    }   
    setTimeout(time(a),1000);
}

time(0);

所以,尽量不要使用setInterval,而要用setTimeout去模拟实现效果。

你可能感兴趣的:(利用setTimeout来实现setInterval)