zoukankan      html  css  js  c++  java
  • 浅谈setTimeout和setInterval

    之前一直没有弄懂 setTimeout 和 setInterval,如今遇到一个题目,查了许久,记录下来方便以后查看。

    setTimeout :mdn解释该方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。

    setInterval:方法重复调用一个函数或执行一个代码段,在每次调用之间具有固定的时间延迟。

    之前认为两者的区别就是一个只是运行一次,另一个一直运行,现在看来太天真; 

    一般的场景下使用两种方法没有问题,但是遇到一个事情,就是在定时器中调用一个接口,判断用户是否扫码登陆。

    仔细排查了,是因为我使用了setInterval,都说setTimeout 不准确,其实setInterval 在某些情况也不准确,在时间上,setInterval 是很准确但是,他不会管其他的事情,到点就下班。。。。

    假设有个函数需要调用,返回为true的时候,停止定时器。

    setInterval 会按照固定时间允许该函数,如果这个函数超时了,那么在n次中就会忽略改函数的返回true,在某些应用场景中这是致命的

    setTimeout  的不准确也是会因为该函数超时了,之前也没有调用方法

    上个栗子这样看的就直观了很多

    /**
             * 1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
             * 2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
             * 3、第一个数需要立即输出
             **/
            function count(start, end) {
                if (start <= end) {
                    console.log(start);
                    start++;
                    st = setTimeout(function() {
                        count(start, end);
                    }, 1000)
                };
                return {
                    cancel: function() {
                        clearTimeout(st)
                    }
                }
            }
            count(1, 10)
    

      

  • 相关阅读:
    搭建高可用K8S集群
    K8S部署apollo配置中心
    微服务二:微服务的拆分、设计模式、内部结构
    微服务一:微服务概念入门及发展历程
    k8s可视化管理dashboard
    Windows节点加入K8S集群(K8S搭建Linux和Window混合集群)
    K8S搭建单点集群+问题处理
    K8S核心概念
    毕业论文word排版设置
    Anaconda3+PyTorch安装教程
  • 原文地址:https://www.cnblogs.com/damai/p/7904796.html
Copyright © 2011-2022 走看看