码迷,mamicode.com
首页 > Web开发 > 详细

JS 节流函数(throttle)与防抖函数(debounce)

时间:2020-07-30 01:21:11      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:return   turn   const   定时   null   函数   timer   滚动   art   

节流和防抖是什么意思

节流:在一定时间内连续触发某事件,在这段时间段内只执行首次触发的那一次。1s内执行第一次
防抖:在一定时间内连续触发某事件,在这段时间内只执行最后一次触发的那一次。最后一次延时1s后执行 

手写节流函数(详见本仓库:造轮子->js篇->throttle.js)

//方法一:利用闭包保存时间
const throttle = function(fn,delay){
  let prev = Date.now()
  return  ()=> {
    let now = Date.now()
    if (now - prev >= delay) {
        fn()
        prev = Date.now()
    }  
  }
}

手写防抖函数

//方法一:利用闭包保存延时器
const debounce = function(fn,delay){
  let timer = null
  return ()=> {
    clearTimeout(timer)
    timer = setTimeout(()=>fn(), delay)
  }
}

应用

  • 防抖应用:输入框 change ,延时响应输入。例如货币输入框自动加小数点
  • 节流应用:响应滚动事件。例如瀑布流无限滚动

JS 节流函数(throttle)与防抖函数(debounce)

标签:return   turn   const   定时   null   函数   timer   滚动   art   

原文地址:https://www.cnblogs.com/xingguozhiming/p/13401466.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!