`
snake_hand
  • 浏览: 625048 次
社区版块
存档分类
最新评论

Javascript Throttle & Debounce

 
阅读更多

Throttle

无视一定时间内所有的调用,适合在发生频度比较高的,处理比较重的时候使用。

var throttle = function (func, threshold, alt) {
    var last = Date.now();
    threshold = threshold || 100;

    return function () {
        var now = Date.now();

        if (now - last < threshold) {
            if (alt) {
                alt.apply(this, arguments);
            }
            return;
        }

        last = now;
        func.apply(this, arguments);
    };
};

 

 

Debounce

一定间隔内没有调用时,才开始执行被调用方法。

var debounce = function (func, threshold, execASAP) {
    var timeout = null;
    threshold = threshold || 100;

    return function () {
        var self = this;
        var args = arguments;
        var delayed = function () {
            if (!execASAP) {
                func.apply(self, args);
            }
            timeout = null;
        };

        if (timeout) {
            clearTimeout(timeout);
        } else if (execASAP) {
            func.apply(self, args);
        }

        timeout = setTimeout(delayed, threshold);
    };
};


Test

var test = function (wrapper, threshold) {
    var log = function () {
        console.log(Date.now() - start);
    };
    var wrapperedFunc = wrapper(log, threshold);
    var start = Date.now();
    var arr = [];

    for (var i = 0; i < 10; i++) {
        arr.push(wrapperedFunc);
    }

    while(i > 0) {
        var random = Math.random() * 1000;
        console.log('index: ' + i);
        console.log('random: ' + random);
        setTimeout(arr[--i], random);
    }
};

test(debounce, 1000);
test(throttle, 1000);
0
4
分享到:
评论

相关推荐

    前端项目-jquery-throttle-debounce.zip

    "前端项目-jquery-throttle-debounce.zip" 是一个专注于这一目标的项目,它利用 jQuery 的扩展插件实现了防抖(throttle)和节流(debounce)功能。接下来,我们将深入探讨这两个概念及其在实际应用中的价值。 **...

    throttle-debounce:油门和反跳功能

    安装npm install throttle-debounce --save用法throttle import { throttle } from 'throttle-debounce' ;const throttleFunc = throttle ( 1000 , false , ( num ) =&gt; {console . log ( 'num:' , num ) ;} ) ;// ...

    Javascript Throttle &amp; Debounce应用介绍

    为了优化这些操作,我们可以使用“防抖(Debounce)”和“节流(Throttle)”技术。这两项技术可以有效减少函数的执行次数,从而优化性能和用户体验。 首先我们来解释“节流(Throttle)”的概念。Throttle意味着在...

    js-throttle-debounce:一个 javascript 原型插件提供了节流和去抖动方法

    bower install js-throttle-debounce对于 node.js,你可以使用这个命令来安装: npm install js-throttle-debounce演示用法你可以这样使用:JavaScript function yourMethod ( ) { // ...}var throttle = ...

    javascript中的throttle和debounce浅析

    主要介绍了javascript中的throttle和debounce浅析,分别介绍了throttle和debounce的使用场景及具体案例,需要的朋友可以参考下

    vue以组件或者插件的形式实现throttle或者debounce

    这时,我们通常会用到`throttle`(防抖)和`debounce`(节流)这两种技术。`throttle`用于限制函数在一定时间内被执行的次数,而`debounce`则是确保在连续触发事件后,只执行最后一次。在这篇文章中,我们将探讨如何...

    JavaScript中定时控制Throttle、Debounce和Immediate详解

    JavaScript中的定时控制技术主要包括Throttle(防抖)、Debounce(去抖)和Immediate(立即执行),这些技术在处理高频率事件或优化性能时非常有用。接下来我们将深入探讨这些概念及其实现方式。 首先,Throttle...

    Javascript Throttle Debounce应用介绍

    JavaScript中的Throttle(节流)和Debounce(防抖)是两种常见的性能优化技术,尤其在处理频繁触发的事件如窗口滚动、resize、输入框输入等场景中非常有用。它们的主要目的是减少函数的执行频率,避免不必要的计算,...

    Javascript节流函数throttle和防抖函数debounce

    针对这两种需求就出现了debounce和throttle两种解决办法。 1. resize事件 2. mousemove事件 3. touchmove事件 4.scroll事件 throttle 与 debounce 在现在很多的javascript框架中都提供了这两个函数。例如 jquery中有...

    javascript函数的节流[throttle]与防抖[debounce]

    JavaScript中的节流(Throttle)和防抖(Debounce)是两种常见的性能优化技术,主要用于控制事件处理函数的执行频率,以改善用户界面的响应性和性能。这两种技术在处理如窗口resize、滚动(scroll)、输入框(input)内容...

    JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)

    为了解决这一问题,开发者通常会采用函数节流(throttle)和函数去抖(debounce)的技术手段。 函数节流(throttle)的基本原理是:设定一个周期,在这个周期内,不论触发了多少次事件,函数都只执行一次。它通过...

    javascript防抖函数debounce详解

    防抖函数(debounce)是JavaScript中用于优化性能的一种技术,尤其在处理高频触发的事件回调时非常有用。它的核心思想是在一定时间内,如果事件触发过于频繁,那么只有最后一次触发的事件才会真正执行对应的回调函数...

    前端大厂最新面试题-debounce_throttle.docx

    前端大厂最新面试题-debounce_throttle 在前端开发中,防抖(debounce)和节流(throttle)是两种常用的优化技术,用于限制高频率执行代码的调用次数,从而提高前端性能。 什么是防抖和节流? 防抖和节流都是优化...

    应用篇 2:事件的节流(throttle)与防抖(debounce)(2).md

    在众多性能优化的方法中,事件的节流(throttle)与防抖(debounce)是常用的技术手段,主要用来控制事件处理函数的执行频率,减少不必要的计算,从而达到提高性能的目的。 首先,我们要明白什么是事件的节流与防抖...

    limit.js:JavaScript eventcall debounce & limit helper

    对于任何函数,您都可以调用myFunction.debounce(milliseconds)来取回一个新函数,该函数在多次调用时只会在所需时间后调用您的原始函数一次。 风门 .throttle(milliseconds) 对于任何函数,您都可以调用...

    javascript实现的广告漂浮

    为了提高性能,可以使用`requestAnimationFrame`或者`throttle/debounce`策略来限制广告位置更新的频率。 在提供的`floatFrame.html`文件中,应该包含了实现这个特效的HTML结构、CSS样式和JavaScript代码。通过查看...

    mini-throttle:一个小JavaScript节流和反跳实现

    这是一个提供throttle和debounce功能的包,同时包含流和TypeScript声明,并且代码占用量最少(少于60行,少于+压缩后少于350个字节) 节流,反跳以及介于两者之间的所有内容 type ThrottleOptions = { start ?: ...

Global site tag (gtag.js) - Google Analytics