节流防抖

最近在准备一些零碎的知识点,总是分不清楚节流和防抖,所以随手记录一下,也方便自己日后回忆

节流:比如监听一个滚动事件,滚动过程中一直在发起请求,或者拖拽事件中一直在请求,就可以控制时间间隔为每隔一段时间发起一次。

代码如下:

let throttle (func, wait = 50) => {
  let lastTime = 0
  return function(...args) {
    let nowDate = +new Date()
    if(nowDate - lastTime > wait) {
      lastTime = nowDate
      function.apply(this, args)      
    }
  }
}

防抖:比如提交按钮,用户点击过快时,不希望发起请求,而是发起一次然后间隔一段时间没有再次点击再发起时再去请求,可以使用防抖

代码如下:

1 let debounce(func,wait=50) => {
2  let timer = 0
3  return function(...args){
4   if(timer) clearTimeout()
5   timer = setTimeout(() => {
6    func.apply(this,args)
7   },wait)
8  }
9 }

 

  

 

posted @ 2021-03-31 15:09  琉璃苣_Ya  阅读(41)  评论(0)    收藏  举报