js 节流(throttle)和防抖(debounce)

// 节流
// 思路: 第一次先设定一个变量true,
// 第二次执行这个函数时,会判断变量是否true,
// 是则返回。当第一次的定时器执行完函数最后会设定变量为flase。
// 那么下次判断变量时则为flase,函数会依次运行。
function throttle(fn, delay = 100) {
    //首先设定一个变量,在没有执行我们的定时器时为null
    var timer = null;
    return function() {
        //当我们发现这个定时器存在时,则表示定时器已经在运行中,需要返回
        if (timer) return;
        timer = setTimeout(() => {
            fn.apply(this, arguments);
            timer = null
        }, delay)
    }
}

// 防抖
// 首次运行时把定时器赋值给一个变量, 第二次执行时,
//  如果间隔没超过定时器设定的时间则会清除掉定时器, 
//  重新设定定时器, 依次反复, 当我们停止下来时,
//  没有执行清除定时器, 超过一定时间后触发回调函数。
function debounce(fn, delay = 100) {
    var timer = null;
    return function() {
        if (timer) clearTimeout(timer)
        timer = setTimeout(() => {
            fn.apply(this, arguments);
            timer = null
        }, delay)
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • debounce:防抖--------让在用户动作停止后延迟x ms再执行回调 throttle:节流------...
    浅秋_6672阅读 5,275评论 0 1
  • 敬爱的李老师,智慧的班主任,亲爱的跃友们: 大家好!我是来自宜兴欧妮薇的胡琳琳 今天是我的日精进行...
    环科园店琳琳阅读 384评论 0 0
  • 前几天一口气将《穆斯林的葬礼》读完,却不忍再次触碰它,阅读完的我的心中充满了心酸和失落,那淡淡的惆怅随着时间流逝...
    凰凰凉凉阅读 1,085评论 0 0
  • 为了促进同学们阅读积极性,我班决定办一期以阅读为主题的板报。 我负责筹备素材,学生们有人负责画画,有人负责涂色,有...
    路晓磊阅读 1,924评论 0 1
  • 马德华“在我眼中,杨洁既是父亲,也是母亲,更是我的老师。” 王伯昭“杨导说,我要知道你要这么多钱,我早就开了你。”...
    鱼乐圈没有圈阅读 4,498评论 0 7