js,防抖和节流

1. 节流:  用户浏览页面时会触发滚轮,移动鼠标等,这些都会频繁的触发接口去请求数据,会造成很大的浏览器开销,出现页面卡顿的情况,我们无法控制浏览器的频率但可以控制事件的触发频率,避免页面卡顿的情况。

2. 防抖:  例如一个搜索按钮,鼠标去触发按钮,当网络出现延迟或者数据返回比较慢的情况,用户出现多次点击去请求数据,造成多余的资源浪费,我们只需要触发最后一次点击即可。

// 节流
function Debouce(fn,wait) {
  let timer = null;
return function(e) {
    clearTimerout(timer)
    timer = setTimeout(() =>{
      fn.apply(this,...arguments)
    },wait)
  }
}

// 防抖
function Throttle(fn,wait) {
  let flag = true;
  return function() {
    if(!flag) return
    flag = false;
    setTimeout(() => {
      fn.apply(this,arguments)
      flag = true;
    },wait)
  }
}

 3. 实例

//监听浏览器滚动条
function showTop(){
  const scrollTop = document.body.scrollTop || document.documentElement.scroollTop;
  console.log()
}

 

posted @ 2023-03-16 17:42  九点钟  阅读(51)  评论(0)    收藏  举报