

方法一:使用lodash库的debounce方法

方法二:手写防抖函数

function debounce(fn,t){
// 1.声明一个定时器变量 因为需要多次赋值 使用let声明
let timer
// 返回一个匿名函数
return function(){
if(timer){
// 如果定时器存在清除之前的定时器
clearTimeout(timer)
}
// 如果没开定时器开定时器
timer = setTimeout(function(){
fn()
},t)
}
}

节流




手写节流函数

实现单位时间段中代码只能执行一次
手写节流函数

function throttle(fn,t){
let timer = null
return function(){
if(!timer){
timer = setTimeout(function(){
fn()
timer = null
},t)
}
}
}
在setTimerOut()中不能直接使用后clearTimeOut()清空定时器




















