JavaScript面试考点之防抖和节流
2021-03-17 本文已影响0人
团子哒哒
1、防抖
防抖是指触发高频事件后固定周期后函数执行一次,如果固定周期内高频事件再次被触发,不执行动作,且周期重新设定,重新计算事件。防抖的含义就是让某个时间期限(如1000ms)内,事件处理函数只执行一次,如果在1000ms内再次触发事件,那么当前的计时取消,重新开始计时。
适用场景:a、用户在输入框中连续输入一串字符后,只会在输入完后去执行最后一次的查询ajax请求,这样可以有效减少请求次数,节约请求资源。
b、window的resize、scroll事件,不断地调整浏览器的窗口大小、或者滚动时会触发对应事件,防抖让其只触发一次。
2、节流
节流是指触发高频事件后固定周期内函数执行一次),如果固定周期内高频事件再次被触发,不执行动作,直到周期结束后触发才生效。节的含义就是让某个时间期限(如1000ms)内,事件处理函数只执行一次,如果在1000ms内再次触发事件,那么当前函数不会响应执行,直到1000ms结束,再有触发才执行。
使用场景:resize scroll。连续不断地触发某事件(如点击),只在单位时间内只触发一次
1)时间戳写法,第一次函数会立即执行
2)定时器写法 第一次不立即执行,但最后一次也会延迟执行