防抖函数

50 阅读1分钟

防抖就是说在一个规定的时间内,只有最后一次操作,这个事件才会成功。

节流是说在一个规定的时间内,不管你操作了多少次,都会当做一次事件。

防抖通常用于实时搜索

每次防抖函数出发的时候都会根据根据变量timeout删除上一个定时器然后触发新的定时器,所以这个不能是内存溢出

防抖函数第一次不会触发,需要设置isInvoke

闭包的参数和变量不会被回收

image.png image.png

image.png function debounce(func, wait) { /* @ func 延迟执行的函数 @ wait 延迟时间 */ let timeout; return function () { let context = this; let args = arguments;

        if (timeout) clearTimeout(timeout);
        
        timeout = setTimeout(() => {
            func.apply(context, args)
        }, wait);
    }
}