JavaScript防抖与节流

94 阅读1分钟

防抖

  • 函数防抖:单位时间内,频繁触发事件,只会触发最后一次
  • 应用场景:输入框输入事件
  • 实现:声明全局变量存储定时器ID,每一次触发事件, 先清除上一次定时器。 然后将事件处理代码放入本次定时器中 js代码:
let timeId = null
       const input = document.querySelector('input')
       input.addEventListener('input',function(){
            clearTimeout(timeId)
            timeId = setTimeout(() => {
            console.log(input.value)
            }, 2000)
        })

html代码:

<input type="text" placeholder="请输入文本">

节流

  • 函数节流:单位时间内,频繁触发事件,只会触发一次
  • 应用场景:滚动条事件
  • 实现:
  1. 声明全局变量存储上一次触发交互时间
  2. 每一次触发事件, 获取当前时间 与 上一次时间做比较。判断是否超过节流间隔
  3. 如果 超过节流时间,则执行事件处理代码。 并且存储本次触发时间。 js代码:
let lastTime = null
window.addEventListener('scroll',function(){
 let currentTime = Date.now()
 if(currentTime - lastTime >= 500){
  lastTime = currentTime
    }
})

如果有不正确的地方,欢迎指出 感谢阅读^-^