函数的节流与防抖

节流(throttle)

函数节流的目的是防止不是用用户直接控制的函数,频繁触发。

  • 最常见的应用场景一般是onrize,onscroll,mousemove等这些频繁触发的函数,比如你想获取滚动条的位置,然后执行下一步动作。
  • 实现的主要步骤是利用延时器延时,延时后才执行操作
var time= false;
window.onscroll = function(){
    if(time=== true) return;
    time= true;
    setTimeout(()=>{
        console.log("每隔500ms才真正触发此函数");
        time= false;
    },500)
}

防抖(debounce)

所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。

  • 主要应用场景比如地图控制缩放时候只执行最后一次函数,input框输入后立即执行异步请求时等等。
  • 实现的步骤主要是在定时范围内清除上一次的timer延时器。达到只执行最后一次的目的。
var timer = null;
 window.onscroll = function(){
     if(timer){
         clearTimeout(timer);
     }
     timer = setTimeout(()=>{
        console.log("记录在300ms内最后一次被调用");
     },300)
 }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最近和前端的小伙伴们,在讨论面试题的时候。谈到了函数防抖和函数节流的应用场景和原理。于是,想深入研究一下两者...
    youthcity阅读 23,660评论 5 78
  • 如果一个事件频繁触发多次,并且两次事件相隔事件比较短,则防抖函数使得对应的处理事件只触发一次。 ``` funct...
    悲伤逆流成河09阅读 261评论 0 0
  • 概念 函数的节流与防抖是优化JavaScript的高频率执行的一种手段。 节流 函数的节流应用于一些函数高频率的场...
    O8阅读 184评论 0 0
  • 概念函数的节流与防抖是优化JavaScript的高频率执行的一种手段。 节流函数的节流应用于一些函数高频率的场景,...
    Pamcore阅读 229评论 0 0
  • 本篇课题,或许早已是烂大街的解读文章。不过春招系列面试下来,不少伙伴们还是似懂非懂地栽倒在(~面试官~)深意的笑容...
    以乐之名阅读 1,806评论 0 9