[英]How to throttle AND debounce a function?
我想知道是否有一種方法可以限制和消除$( window ).resize
(或其他任何函數)調用的函數。 我試圖僅節流,但是問題是因為我正在使用100%的寬度,如果我在下一次執行該功能之前停止調整大小,則會出現水平滾動。 因此,我需要對它進行去抖動處理,以確保調整大小后它也可以執行。
如果您能想到其他方法,請告訴我!
我通常使用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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.