JavaScript防抖与节流

作者: Mstian | 来源:发表于2020-04-17 14:19 被阅读0次

防抖(debounce)和节流(throttle)是在JS中处理高频事件时所作的一些优化操作,从而减轻浏览器负担,还不影响实际效果。

防抖

防抖定义:当持续触发事件时,一定时间内没有触发的时候,事件处理函数才会执行一次,如果在一定时间内重新触发了事件,那么重新开始延时执行事件处理函数。

手写防抖函数:

function debounce(func, await) {
    var timer = null;
    return function () {
        var args = arguments;
        if (timer) {
            clearTimeout(timer);
        }
        timer = setTimeout(() => {
            func.apply(this, args)
        }, await);
    }
}

特点:当持续不断触发事件时,那么执行事件处理函数是永远不会触发的。

节流

节流定义:当持续触发事件,事件处理函数在第一次执行之后,该函数在指定的期限内不再工作,直到过了这段时间之后,再触发事件才重新生效。

手写节流函数:
版本1:标志变量+定时器

function throttle(func,await){
    var valid = true;
    return function(){
        if(!valid){
            console.log("繁忙中,暂不执行");
            return;
        }
        valid = false;
        var args = arguments;
        setTimeout(() => {
            func.apply(this,args);
            valid = true;
        }, await);
    }
}

版本2:时间戳

function throttle(func,await){
    var starttime = 0;
    return function(){
        var endtime = Date.now();
        var args = arguments;
        if(endtime - starttime > await){
            func.apply(this,args);
            starttime = endtime;
        }else{
            console.log("繁忙中,暂不执行")
        }
    }
}

特点:当持续不断触发事件时,那么执行事件处理函数会每隔一定周期触发一次。

相关文章

  • Javascript 基础

    1、函数防抖和函数节流 【《javascript高级程序设计》里,函数节流是这里讲的函数防抖。】函数防抖: 在事件...

  • JavaScript防抖与节流

    防抖(debounce)和节流(throttle)是在JS中处理高频事件时所作的一些优化操作,从而减轻浏览器负担,...

  • 函数节流与函数防抖

    函数节流与函数防抖的区别JS魔法堂:函数节流(throttle)与函数去抖(debounce)函数的防抖与节流 自...

  • 彻底弄懂函数防抖和函数节流

    函数防抖和节流 函数防抖和函数节流:是优化高频率执行的JavaScript代码的一种手段。常用于JavaScrip...

  • 函数防抖和函数节流

    函数防抖和函数节流 函数防抖和函数节流:是优化高频率执行的JavaScript代码的一种手段。常用于JavaScr...

  • JavaScript之节流与防抖

    背景 我们在开发的过程中会经常使用如scroll、resize、touchmove等事件,如果正常绑定事件处理函数...

  • JavaScript 防抖与节流函数

    在项目中有一个需求,侧边栏回到顶部的组件由原来的 页面滚动到一定距离后持续显示 改为 当页面滚动时不显示,页面停止...

  • JavaScript的防抖与节流

    函数防抖 函数防抖(debounce):你尽管触发事件,但是我一定在事件触发 n 秒后才执行,如果你在一个事件触发...

  • JavaScript函数防抖与节流

    一、函数防抖 debounce 1、概念 其概念衍生自机械开关和继电器的去弹跳;可以这么理解,一个弹簧片,你一直向...

  • javascript的节流与防抖

    函数节流 方法一 时间戳 方法二 定时器 函数的防抖

网友评论

    本文标题:JavaScript防抖与节流

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