javascript 防止高频调用的debounce函数
程序员文章站
2024-02-04 14:14:46
...
下面这个降频函数 debounce 能让你的代码变的高效:
// 返回一个函数,that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
// Usage
var myEfficientFn = debounce(function() {
// All the taxing stuff you do
}, 250);
window.addEventListener('resize', myEfficientFn);
debounce
函数在给定的时间间隔内只允许你提供的回调函数执行一次,以此降低它的执行频率。当遇到高频触发的事件时,这样的限制显得尤为重要。
推荐阅读
-
javascript 防止高频调用的debounce函数
-
javascript - ajax:怎么获得onreadystatechange调用的函数的返回值?
-
javascript 函数调用的对象和方法_javascript技巧
-
javascript 函数调用的对象和方法_javascript技巧
-
javascript函数定义、调用模式及this的初始化实例详解
-
深入理解JavaScript系列(4) 立即调用的函数表达式_javascript技巧
-
JavaScript:new 一个函数和直接调用函数的异同
-
javascript函数的四种调用模式
-
javascript函数的四种调用模式
-
JavaScript的级联函数用法简单示例【链式调用】