防抖和节流都是用于项目优化的手段,用来限制事件的触发频率的两种常见技术,
什么是防抖:
在事件被触发后,等待一段时间,如果在这段时间内没有再次触发该事件,则执行相应的操作,如果在定时等待期间又触发的该事件,则重新计时,主要用于处理频繁触发的事件。
核心原理 :
防抖的实现最主要的原理就是对定时器的清除,重新建立来实现的。
二次点击该事件会将第一次的点击建立的定时器清除,再创立,从而实现重新计时,整个流程只有一个触发器,多次点击的话,依次类推。
应用场景:
将多次高频操作优化为只在最后一次执行,通常使用的场景是:用户连续输入,只需要在输入结束后做一次校验即可,比如input搜索、校验等
什么是节流:
在一定时间间隔内只执行一次事件。无论事件触发多频繁,都会按照固定的时间间隔执行相应的操作。节流主要用于限制某些操作的执行频率,例如滚动事件、鼠标移动事件等。
核心原理 :
节流的实现是利用条件判断来进行定时器的创建,只有初次点击,才会创建定时器,在定时器内除了逻辑代码还需写一个用于进入定时器创建的条件的初始化,从而实现几秒内只能触发一次事件。
在delay秒重复点击该事件,都不会进入条件,只有定时器计时结束才会修改条件为 null 从而实现delay秒内只能触发一次事件
应用场景:
将多次高频操作优化为在一定时间内只执行一次,通常使用的场景是:滚动事件、窗口大小变化事件等。