节流防抖简化版

Posted 仲夏你的梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节流防抖简化版相关的知识,希望对你有一定的参考价值。

节流

function throttle(fn, delay) 
  let last = 0 // 上次触发时间
  return (...args) => 
    const now = Date.now()
    if (now - last > delay) 
      last = now
      fn.apply(this, args)
    
  


// 测试
function task() 
  console.log('run task')

const throttleTask = throttle(task, 1000)
window.addEventListener('scroll', throttleTask)

防抖

function debounce(fn, delay) 
  let timer
  return function (...args) 
    if (timer) 
      clearTimeout(timer)
    
    timer = setTimeout(() => 
      fn.apply(this, args)
    , delay)
  


// 测试
function task() 
  console.log('run task')

const debounceTask = debounce(task, 1000)
window.addEventListener('scroll', debounceTask)

以上是关于节流防抖简化版的主要内容,如果未能解决你的问题,请参考以下文章

前端防抖和节流

前端防抖和节流

防抖节流一步一步详细讲解,从简单到复杂,从入门到深入了解,再到 Vue 项目中是怎样调用防抖节流方法的

防抖节流一步一步详细讲解,从简单到复杂,从入门到深入了解,再到 Vue 项目中是怎样调用防抖节流方法的

防抖节流 从简单到复杂,一步一步从入门到深入了解

手写防抖、节流 hook(ts版)