js函数节流和函数防抖

概念解释

函数节流: 频繁触发,但只在特定的时间内才执行一次代码

函数防抖: 频繁触发,但只在特定的时间内没有触发执行条件才执行一次代码

函数节流

函数节流应用的实际场景,多数在监听页面元素滚动事件的时候会用到。因为滚动事件,是一个高频触发的事件。

以下是监听页面元素滚动的示例代码:

// 函数节流
var canRun = true;
document.getElementById("throttle").onscroll = function(){
    if(!canRun){
        // 判断是否已空闲,如果在执行中,则直接return
        return;
    }

    canRun = false;
    setTimeout(function(){
        console.log("函数节流");
        canRun = true;
    }, 300);
};
// 函数节流的要点是,声明一个变量当标志位,记录当前代码是否在执行。
// 如果空闲,则可以正常触发方法执行。
// 如果代码正在执行,则取消这次方法执行,直接return。

函数抖动

函数防抖的应用场景,最常见的就是用户注册时候的手机号码验证和邮箱验证了。

只有等用户输入完毕后,前端才需要检查格式是否正确,如果不正确,再弹出提示语。

以下还是以页面元素滚动监听的例子,来进行解析:

// 函数防抖
var timer = false;
document.getElementById("debounce").onscroll = function(){
    clearTimeout(timer); // 清除未执行的代码,重置回初始化状态

    timer = setTimeout(function(){
        console.log("函数防抖");
    }, 300);
};
// 函数节流的要点,也是需要一个setTimeout来辅助实现。延迟执行需要跑的代码。
// 如果方法多次触发,则把上次记录的延迟执行代码用clearTimeout清掉,重新开始。
// 如果计时完毕,没有方法进来访问触发,则执行代码。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 导读: 函数节流和函数防抖是我们解决频繁触发DOM事件的两种常用解决方案,都对提升页面性能有显著的功效。 例子: ...
    饮杯梦回酒阅读 4,631评论 0 5
  • 函数节流 初识概念: 生活中有很多这样的例子,小学的时候课本里讲要节约用水随时关水龙头,灯不要一直开着出门或者睡觉...
    1海内无双1阅读 3,904评论 1 3
  • 某些情况下,例如响应鼠标移动、窗口大小调整、页面滚动的事件,触发的频率较高。如果这个时候需要处理的函数稍微复杂点,...
    Tiny_z阅读 4,977评论 0 0
  • 概念 函数防抖(debounce) 当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执...
    yuanjiex阅读 3,772评论 0 1
  • 我喜欢你 但不代表我会永远付出,永远等待 我累了 我会毫不犹豫的离开 开始我新的生活 你会很奇怪,我为什么累了就离...
    南笙苯阅读 708评论 0 1