第三章:防抖节流-灵析社区

懒人学前端

一、防抖

防抖是指短时间内大量触发同一事件,只会在最后一次事件完成后延迟执行一次函数。例如,在输入用户名的过程中,需要反复验证用户名。此时,您应该等待用户停止输入,然后进行验证,否则将影响用户体验。 防抖实现的原理是在触发事件后设置计时器。在计时器延迟过程中,如果事件再次触发,则重置计时器。在没有触发事件之前,计时器将再次触发并执行相应的功能。

  • 声明定时器
  • 返回函数
  • 一定时间间隔,执行回调函数
  • 回调函数

已执行:清空定时器

未执行:重置定时器

function debounce(fn, delay) {
        let timer = null
        return function (...args) {
                if (timer) clearTimeout(timer)
                timer = setTimeout(() => {
                        timer = null
                        fn.apply(this, args)
                }, (delay + '') | 0 || 1000 / 60)
        }
}

二、节流

节流是指每隔一段时间就执行一次函数。就像未拧紧的水龙头一样,水龙头每隔一段时间就会滴水。即使在这段时间管道里有更多的水,水龙头也不会掉更多的水。

节流的原理是在触发事件后设置计时器。在计时器延迟过程中,即使事件再次触发,计时器的延迟时间也不会改变。在计时器执行功能之前,计时器不会复位。

  • 声明定时器
  • 返回函数
  • 一定时间间隔,执行回调函数
  • 回调函数

已执行:清空定时器

未执行:返回

function throttle(fn, interval) {
        let timer = null
        return function (...args) {
                if (timer) return
                timer = setTimeout(() => {
                        timer = null
                        fn.apply(this, args)
                }, (interval +'')| 0 || 1000 / 60)
        }
}


阅读量:2018

点赞量:0

收藏量:0