使用 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);

猜你喜欢

转载自www.cnblogs.com/restart77/p/12337040.html
今日推荐