如何节流和去抖功能?

时间:2017-02-28 13:22:45

标签: javascript jquery

我想知道是否有一种方法来限制和去抖$( window ).resize(或任何其他)调用的函数。我试过只调节但问题是因为我使用了100%的身体宽度,如果我在下一次执行功能之前停止调整大小,水平滚动apear。因此,在调整大小之后,我需要去除它以使其成为执行者。

如果你能想到另一种方式,请告诉我!

1 个答案:

答案 0 :(得分:2)

我通常使用setTimeout完成此操作:

// Timer handle; 0 = invalid handle
var scrollTimer = 0;
$("window").on("scroll", function() {
    // Clear any pending work (it's okay to call with 0 [invalid handle], but add a guard if you like)
    clearTimeout(scrollTimer);
    // Schedule callback in X milliseconds
    setTimeout(scrollHandler, 10); // 10 = 10ms, adjust as you like
});
function scrollHandler() {
    scrollTimer = 0;
    // ...
}

如果在该时间间隔内出现新的滚动,则之前对scrollHandler的调用永远不会发生,我们会安排一个新的滚动。在最后一个之后的X毫秒,scrollHandler被调用。