防抖和节流

防抖     节流简单说明



防抖(debounce)

以上就是利用了防抖,防抖就是在一段时间内重复触发事件,延迟事件处理函数的执行,它并没有减少事件的触发,只是限制了处理函数的执行。

常见的搜索输入框都有联想功能,但它们不会在用户不断输入搜索条件过程中重复发送请求,这样会浪费不必要的性能,比较合理的是在用户停止输入的间隙发送请求,这样大大减少了请求。

函数实现

/*callback:回调函数 *delay:延迟执行间隔时间 */functiondebounce(callback,delay){varcontext =this,        timer;returnfunction(){        clearTimeout(timer);        timer = setTimeout(()=>{//dosomething            callback.apply(context);        },delay)}}window.addEventListener('resize',debounce(callback,300));


节流(throttle)

     与防抖不同的是,节流是采用周期性的执行回调函数来避免频繁触发回调事件。比如在写页面滚动事件时,滚动一小段距离就有可能执行多次事件,如果事件中涉及复杂的dom操作或者计算,就会影响页面性能。

/*

* callback:回调函数

* delay:执行周期

*/functionthrottle(callback,delay){vartimer,        begin =newDate();returnfunction(){//记录事件触发时的时间varcurrent =newDate();//清除上一次定时器任务clearTimeout(timer);//判断距上一次触发是否已过了delay的时间if(current - begin >= delay){            callback();            begin = current;        }else{            timer = setTimeout(()=>{                callback();            },delay);        }    }}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 闭包 由于节流和防抖函数的实现都用到了闭包,所以在了解节流和防抖之前我先简单介绍下什么是闭包。 由于js代码在一个...
    喵咪_f9a1阅读 2,144评论 0 0
  • 防抖:把多次触发频繁的事件合并成一次去执行。就是最后一次事件触发后的指定时间内只执行一次回调函数,如果在指定的时间...
    Greens_dbd2阅读 1,648评论 0 0
  • 防抖和节流都是为了解决短时间内大量触发某函数而导致的性能问题,比如触发频率过高导致的响应速度跟不上触发频率,出现延...
    _SweetHeart阅读 3,060评论 0 1
  • 防抖和节流是针对响应跟不上触发频率这类问题的两种解决方案 debounce,去抖动。策略是当事件被触发时,设定一个...
    皇甫圣坤阅读 2,994评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,217评论 16 22

友情链接更多精彩内容