防抖(debounce)
防抖,顾名思义,防止抖动。
用于将用户的操作行为触发转换为程序行为触发,防止用户操作的结果抖动。一段时间内,事件在我们规定的间隔 n 秒内多次执行,回调只会执行一次。
特点:等待某种操作停止后,加以间隔进行操作
持续触发不执行
不触发的一段时间之后再执行
鼠标滑动事件
search搜索联想,用户在不断输入值时,用防抖来节约请求资源。
window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次
节流(throttle)
节流,顾名思义,控制流量。
用于用户在与页面交互时控制事件发生的频率,一般场景是单位的时间或其它间隔内定时执行操作。一段时间内,事件在每次到达我们规定的间隔 n 秒时触发一次。
特点:每等待某种间隔后,进行操作
持续触发并不会执行多次
到一定时间 / 其它间隔 ( 如滑动的高度 )再去执行
监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断
实例
// 防抖
function debounce(fn,delay){
// 维护一个 timer
let timer=null;
return function(){
// 获取函数的作用域和变量
let context