33、函数防抖与节流

解决性能问题,可降低函数调用频率。事件频繁触发的时候,比如window.resize以及window.onmousemove等等,触发频率十分高,会造成浏览器性能问题。以及输入框搜索的时候会实时去后台请求数据,对服务器造成不必要的压力。

函数节流(间隔一定时间执行一次)
function throttle(fn,delay=500){
    let pre = 0;
  return function(event){
      const cur = Date.now();
    if(cur - pre > delay){                    //只有与上次调用的时间差大于delay
      fn.call(this,event)
      pre = cur;
    }
  }
}
函数防抖(一定时间内,只触发最后一次)
function debounce(fn,delay = 500){
  let timer = null;
  return function(e){
    if(timer){clear(timer)}
    timer = setTimeout(()=>{        //这里需要用箭头函数;因为需要改变this指向
      fn.call(this,e)
    },delay)
    timer = null;
  }
}

补充:高阶函数:1、参数是函数 2、返回值是函数。满足其中之一的就是高阶函数。

results matching ""

    No results matching ""