zoukankan      html  css  js  c++  java
  • 使用 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);
  • 相关阅读:
    互操作
    Rx基础
    数据流块基础
    C# 一个帮您理解回调函数的例子(新手必看)
    C# 多线程之通过Timer开启线程的例子
    C# 利用委托事件进行窗体间的传值(新手必看)
    C#XML文件操作随笔
    C# 委托学习笔记
    c# 关于抓取网页源码后中文显示乱码的原因分析和解决方法
    c# 异步编程 使用回调函数例子
  • 原文地址:https://www.cnblogs.com/restart77/p/12337040.html
Copyright © 2011-2022 走看看