手写js防抖与节流函数
概念
防抖:顾名思义,防抖就是防止“抖动”,避免一个事件被多次触发。
就像大家在上网时难免会遇到网络不佳的时候,网页加载慢,而你心急的不断点击刷新按钮,在刷新进度条还为加载完成的时候,你又再次点击刷新,进度条又重新回到了起点,而最终加载出界面一定是在你最后一次点击刷新后,不再操作等待一定时间的结果。
虽然上面的例子并未用到防抖,但表现有相似之处。
若是假设每次刷新页面所用时间固定且相同,这样就和执行防抖操作有了相同的表现。
防抖函数:
function debounce(fun, delay) {
let timer = null // 利用闭包保存一个记号
return function (...args) {
// 首先清理之前的定时器
if (timer) clearTimeout(timer)