防抖(debounce):不管事件觸發頻率多高,一定在事件觸發n秒後才執行,如果你在乙個事件觸發的 n 秒內又觸發了這個事件,就以新的事件的時間為準,n秒後才執行,總之,觸發完事件 n 秒內不再觸發事件,n秒後再執行。 直接上**例如頁面視窗一直在改變 ,停止的是n秒後執行事件
window.
onload
=function()
function
debounce
(event, time)
, time);}
;}
function
handleresize()
節流(throttle):不管事件觸發頻率多高,只在單位時間內執行一次。有兩種方式可以實現節流,使用時間戳和定時器
時間戳實現
第一次事件肯定觸發,最後一次不會觸發
function
throttle
(event, time)
}
定時器實現第一次事件不會觸發,最後一次一定觸發
function
throttle
(event, time)
, time);}
}}
結合版定時器和時間戳的結合版,也相當於節流和防抖的結合版,第一次和最後一次都會觸發
function
throttle
(event, time)
elseif(
!timer)
, time);}
}}
上面可以根據自己業務需求改變業務邏輯
防抖與節流方案 函式防抖和節流
在前端開發的過程中,我們經常會需要繫結一些持續觸發的事件,如 resize scroll mousemove 等等,但有些時候我們並不希望在事件持續觸發的過程中那麼頻繁地去執行函式。通常這種情況下我們怎麼去解決的呢?一般來講,防抖和節流是比較好的解決方案。讓我們先來看看在事件持續觸發的過程中頻繁執行...
防抖和節流 什麼是防抖和節流
目錄二 節流 有這樣一種情況,想象有乙個表單,點選提交按鈕就傳送請求給伺服器。如果使用者在很短的時間間隔內 手抖 點選了多次,又或者是惡意點選,那麼就將傳送多個請求。該行為將造成伺服器額外的不必要負載。所謂防抖,實際上就是是處理這種常見的情況的描述。submit該段 當點選submit按鈕的時候,將...
防抖和節流的實現
常見的滾動監聽事件,每次滾動都會觸發,如此太過浪費效能,要如何優化呢?思路 在第一次觸發事件的時候,不是立即執行函式,而是給出乙個delay時間值,例如200ms 效果 短時間內大量出發同一事件最終只會執行一次 實現 利用settimeout來實現計時器的功能 防抖 const debounce f...