js防抖函数及优化

技术 · 2023-07-11
js防抖函数及优化

防抖:前面的所有的触发都被取消,最后一次执行在规定的时间之后才会触发,也就是说如果连续快速的触发,只会执行一次
js实现防抖,短时间内多次触发的方法,只执行最后一次

        let input = document.querySelector('input')
        let t = null
        input.oninput = function(){
            if(t!=null){
                clearTimeout(t) //每次执行前都清除一次定时器
            }
            t = setTimeout(() => {
                console.log(this.value)
            }, 500);
        }

代码优化后(闭包):

        let input = document.querySelector('input')
        input.oninput=debounce(function(){
            console.log(this.value)
        },500);
        function debounce(fn,delay){
            let t = null
            return function(){
                if( t!==null){
                    clearTimeout(t)
                }
                t = setTimeout(() => {
                    fn.call(this);
                }, delay);
            }
        }
javascript 防抖
Theme Jasmine by Kent Liao