函式節流和函式防抖,兩者都是優化高頻率執行js**的一種手段。
函式節流(throttle)與 函式防抖(debounce)都是為了限制函式的執行頻次,以優化函式觸發頻率過高導致的響應速度跟不上觸發頻率,出現延遲,假死或卡頓的現象。
函式節流是指一定時間內執行的操作只執行一次,也就是說即預先設定乙個執行週期,當呼叫動作的時刻大於等於執行週期則執行該動作,然後進入下乙個新週期,乙個比較形象的例子是如果將水龍頭擰緊直到水是以水滴的形式流出,那你會發現每隔一段時間,就會有一滴水流出。
function debounce(fn, wait)
}// 處理函式
function handle()
// 滾動事件
window.addeventlistener('scroll', debounce(handle, 1000));
函式防抖是指在一定時間內,在動作被連續頻繁觸發的情況下,動作只會被執行一次,也就是說當呼叫動作過n毫秒後,才會執行該動作,若在這n毫秒內又呼叫此動作則將重新計算執行時間,所以短時間內的連續動作永遠只會觸發一次,比如說用手指一直按住乙個彈簧,它將不會彈起直到你鬆手為止。
var throttle = function(func, delay)
}
}
function handle()
window.addeventlistener('scroll', throttle(handle, 1000));
var throttle = function(func, delay) , delay);}}
}function handle()
window.addeventlistener('scroll', throttle(handle, 1000));
js節流防抖
什麼是節流防抖?在學習這個問題前,我們先丟擲問題 假設我現在有這麼乙個需求 根據input框輸入內容列印到控制台這個問題簡單啊,很簡單的功能嘛,如下 text id input let input document.getelementbyid input input.addeventlistene...
js防抖節流
第一種 function debounce fn,delay delay 第二種 function debounce fn,delay delay 立即執行就是事件觸發後立即執行,然後超過一段時間沒有觸發事件,執行函式才會被觸發執行 function fn,delay timer settimeou...
JS防抖節流
在事件被觸發n秒後再執行 函式,如果在這n秒內又被觸發,則重新計時。1 使用者在輸入框中連續輸入一串字元後,只會在輸入完後去執行最後一次的查詢ajax請求,這樣可以有效減少請求次數,節約請求資源 2 window的resize scroll事件,不斷地調整瀏覽器的視窗大小 或者滾動時會觸發對應事件,...