节流和防抖

  在前端开发中会有用户行为会频繁的触发事件,比如疯狂的点击。对于dom操作,资源的加载等耗费性能的处理可能会导致界面的卡顿,甚至浏览器崩溃。函数节流防抖就是为了解决类似的问题产生的。

  函数节流就是预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。就像水滴到攒到一定重量才会滴落。

  html部分有一个点击按钮,当点击的时候会显示点击的次数。

<div id="div">0</div>
<button id="btn"></button>

  script部分在点击时候限制在1秒钟只能点击一次

     var div = document.getElementById("div");
     var btn = document.getElementById("btn");

    function throttle(handle,wait){
            var lastTime = 0;
            return function(e){
                var nowTime = new Date().getTime();  //从1900开始到现在过了多少毫秒
                if(nowTime - lastTime > wait){
                    handle.apply(this,arguments)
                    lastTime = nowTime;
                }
            }
        }
        function buy(e){
            console.log(this,e)
            div.innerHTML = parseInt(div.innerHTML) + 1;
        }
        btn.onclick = throttle(buy,1000)

  防抖:类似于上公交车,有人上的时候车不会走。当没有人上的时候,等一段时间再走。再互联网的应用比如说百度搜索,当输入字符的时候不会马上搜索,而是当停止输入过一段时间后自动搜索。

  html 部分是一个输入框

<input type="text" id="inp">

 script部分是防抖代码,一秒钟以后才会搜索

        var inp = document.getElementById("inp");
        var timer = null;
        function ajax(){
            console.log(this.value);
        }
        inp.oninput = function(){
            var self = this;
            clearTimeout(timer);
            timer = setTimeout(function(){
                ajax.call(self)
            },1000)
        }
原文地址:https://www.cnblogs.com/wangzheng98/p/11344659.html