防抖节流 的使用场景

防抖:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。

场景:函数防抖是某一段时间内只执行一次。
例如:input输入框搜索联想;
window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次

function debounce(fn, delay){
    let timer = null
    return  function(arguments){
       let that = this
       if(timer)  clearTimeout()
       timer = setTimeout(() => {
           fn.apply(that, arguments)
       },delay)
    } 
}

节流:规定一个单位时间内,只能触发函数一次。如果单位时间内触发多次函数,只有一次生效。

场景:鼠标不断点击触发
监听滚动事件,例如是否滑到底部自动加载更多

function throttle(fn, delay){
  let flag = true
  return function(){
     if(!flag)  return
     flag = true
     setTimeout(() => {
        fn.apply(this, arguments)
        flag = true
     })
  }
}

你可能感兴趣的:(防抖节流 的使用场景)