函数的防抖---js

Posted 林中有风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的防抖---js相关的知识,希望对你有一定的参考价值。

执行规定一段时间后执行
    <input type="text" id="inp" />
    <script>
        var oInp = document.getElementById("inp")
        var timer = null;

        function ajax(e) {  // 需要执行的函数
            console.log(this.value);  
        }
        oInp.oninput = function(e) {
            clearTimeout(timer);  // 结束上一次的定时器
            var _this = this, _argm = arguments
            timer = setTimeout(function() {   // 1000ms后执行定时器内的事件
                ajax.apply(_this, _argm)   // 使用apply将this指向到该函数内
            }, 1000)
        }
    </script>

 将该功能封装成一个还是

    <input type="text" id="inp" />
    <script>   
        var oInp = document.getElementById("inp")
        var timer = null;

        function ajax(e) { // 需要执行的函数
            console.log(this.value, e);
        }

        function debounce(handler, delay) { //封装防抖
            var timer = null;
            return function() {
                var _this = this,
                    _argm = arguments;
                clearTimeout(timer)
                timer = setTimeout(function() {
                    handler.apply(_this, _argm)
                }, delay)
            }
        }

        oInp.oninput = debounce(ajax, 1000)  
     </script>

 

以上是关于函数的防抖---js的主要内容,如果未能解决你的问题,请参考以下文章

js中的防抖函数

js 函数的防抖(debounce)与节流(throttle)

js的防抖、节流

lodash的防抖和节流方法

js的防抖和节流

JS的防抖与节流 -- springboot实战电商项目mall4j