使用 setTimeout 来模拟一个 setInterval

Posted duqianqian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 setTimeout 来模拟一个 setInterval相关的知识,希望对你有一定的参考价值。

setTimeout  超时调用;在多少时间 在执行;
 setinterval 每隔多少时间  就调用
例如:
    setTimeout这个的值是1000,也就是说在页面刷新后,1000毫秒之后才调用这个函数体内的东西
             setTimeout有一个最低的时间限制,400s
    setinterval的值是1000的话,就是每过1000毫秒执行一次

1 为什么要模拟 ? 2 然后模拟是解决了什么  ?
3.setinterval  有两个缺点:
    1、setInterval无视网络延迟,只要达到时间,就会进行下一次调用。假设我们在请求一个http接口,在上            一次还未返回结果的情况下,继续发起请求,很有可能的结果就是一次性得到多次同样的结果。当http接口都报错的时候,可能同时出现多次错误提示。或者多次页面刷新的状况。
2、假设每100毫秒执行一次,若上次执行只花了5ms,则下次执行会在95ms以后。时间并不准确。
3、即使setInterval调用的方法报错了,他仍然会继续执行。



// 定时间隔执行
const myInterval = function(fn, t) {
const obj = {
timmer: null
};


(function inner() {
fn();
obj.timmer = setTimeout(inner, t);
})();


return obj;
};
// 清空定时执行
const clearMyInterval = function(obj) {
clearTimeout(obj.timmer);
};


// 使用示例
let tt = myInterval(() => {
console.log(1);
}, 1000);
// 清空示例
setTimeout(() => {
clearMyInterval(tt);
}, 3000);

以上是关于使用 setTimeout 来模拟一个 setInterval的主要内容,如果未能解决你的问题,请参考以下文章

使用setTimeout模拟setInterval效果

定时器复习

setTimeout代替setInterval的写法以及setInterval的弊端以及越来越快的解决办法

定时器和延时器(利用定时器制作倒计时)

javascript定时器详解

请简述一下settimeout和setinterval的区别,其中包括内存方面的分析前端