suukii / fe-interview

前端面试题整理
5 stars 0 forks source link

如何实现事件的防抖和节流? #11

Open suukii opened 4 years ago

suukii commented 4 years ago

节流

节流的核心思想是:如果在定时器的时间范围内再次触发事件,就什么都不做,只有等当前定时器结束后,才能启动新的定时器。 代码思路:用一个 flag 来标识当前是否可以启动定时器,当我们启动一个定时器时,把 flag 设为 false,等这个定时器结束后再把 flag 设为 true。

防抖

每次事件触发时都删除原来的定时器,然后启动一个新的定时器。

加强版防抖

在防抖的情况下,如果事件触发得太频繁,会导致一次响应也没有,但我们希望到了固定时间时必须给用户一个响应。 代码思路:记录上一个定时器结束的时间 last,当事件触发时,计算当前时间与上一个定时器结束时间的差距 now - last,如果时间差大于我们预设的固定时间,就立即执行一次函数。