美文网首页
函数节流

函数节流

作者: 努力与幸运 | 来源:发表于2020-05-02 20:03 被阅读0次

原本链接:https://segmentfault.com/a/1190000019577510?utm_medium=referral&utm_source=tuicool
函数节流:限制一个函数在一定时间内只能执行一次
在前端开发中,有一些事件或者函数有可能会在短时间内触发多次,比如说:onresize,scroll,mousemove,mousehover等,这些事件的触发频率很高,如果在这些函数内部执行了其他函数,尤其是执行了操作DOM的函数,不仅会造成计算机资源的浪费,还会降低程序运行速度,甚至造成浏览器卡死崩溃,除此之外,重复的ajax调用不仅可能会造成请求数据的混乱,还会造成网络拥塞,占用服务器带宽,增加服务压力
方法一:时间戳方案

//时间戳方案
function throttle(fn,wait){
  var pre = Date.now();
  return function(){
    var context = this;
    var args = arguments;
    var now = Date.now(); 
    if(now-pre >=wait){
      fn.apply(context,args);
      pre = Date.now();
    }
  }
}
function handle(){
  console.log(Math.random());
}
window.addEventListener("mousemove",throttle(handle,1000));

方法二:定时器方案

//定时器方案
function throttle(fn,wait){
 var timer = null;
  return function(){
    var context = this;
    var args = arguments;
    if(!timer){
      timer= setTimeout(function(){
        fn.apply(contect,args);
        timer = null;
      },wait)
    }
}

}
function handle(){
  console.log(Math.random());
}
window.addEventListener("mousemove",throttle(handle,1000));
``
函数节流一般用在:
1)懒加载,滚动加载,加载更多或监听滚动条位置
2)百度搜索框,搜索联想功能
3)防止高频点击提交,防止表单重复提交

相关文章

网友评论

      本文标题:函数节流

      本文链接:https://www.haomeiwen.com/subject/baurlctx.html