• 为什么setinterval和settimeout越点击越快以及响应的解决办法


    setinterval大家都很了解,但是如果时间长的话,误差也会越来越大,所以我习惯上使用settimeout的递归,闲来没事,写了一个定时器的递归

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
    </head>
    <body>
    <div>
    
    </div>
    <button>点击</button>
    </body>
    <script>
        $(function () {
            var num = 0;
            var end = "";
            $("button").on("click", function () {
                function result() {
                    end = setTimeout(function() {
                        num++;
                        $("div").text(num);
                        result()
                    }, 1000);
                }
                result();
            })
        })
    </script>
    </html>
    

      嗯,,看似很完美,有一个很明显的bug,那就是在页面上,越点击,,它跑的越快,并没有依照1000毫秒的时间进行间隔执行,这是因为,,每点击一次,,settimeout就注册一次,所以会越来越快,,解决的思路就是每次点击的时候进行定时器的清除,,代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
    </head>
    <body>
    <div>
    
    </div>
    <button>点击</button>
    </body>
    <script>
        $(function () {
            var num = 0;
            var end = "";
            $("button").on("click", function () {
                clearTimeout(end);
                function result() {
                    end = setTimeout(function() {
                        num++;
                        $("div").text(num);
                        result()
                    }, 1000);
                }
                result();
            })
        })
    </script>
    </html>
    

      嗯,,完美

  • 相关阅读:
    linux
    【转】三种地理参考信息模型:WMS,WFS,WCS
    Flex工程与Asp.net工程集成发布时若干注意事项
    招聘Asp.NET高级开发人员
    【转】2008'中国地理信息系统优秀工程公示
    推荐一本GIS的好书《空间数据库》
    集中推荐一些Map Projection方面资源
    收藏几篇虚拟化的文章
    征集“地图制图”WEB站点、BBS
    [转]NHibernate文章转载
  • 原文地址:https://www.cnblogs.com/mmykdbc/p/7418575.html
Copyright © 2020-2023  润新知