什么是防抖
防抖是当事件被触发后,延迟n秒后再执行回调,如果再这n秒内事件又被触发,则重新计时
什么是节流
节流就是减小一段实际内事件的触发频率,按下之后,后续的按下或输入都不会再执行,只能触发第一次的事件,必须等第一件事执行完后,才能执行下一次的事件。
防抖和节流的区别
防抖:获取高频事件的最后一次执行结果
节流:控制高频事件的触发次数,因此,节流是有选择性的执行一部分事件
防抖的应用场景
1.输入框是按键触发请求时
用户连续输入一串字符时,可以通过防抖策略,只在输入完后,才执行查询的请求,这样可以有效减少请求次数,节约请求资源
节流的应用场景
1.鼠标连续点击触发事件
只在单位时间内触发一次。
2.懒加载时要监听计算滚动条的位置
但不必每次滑动都触发,可以降低计算的频率,而不必浪费cpu资源
核心思路:由于JS的单线程机制,定时器会被丢到线程池里,先执行下面的flag=false,然后再执行定时器里的内容(打印后变为true)