函式防抖與節流

2021-08-21 19:03:25 字數 1116 閱讀 6613

因為在寫前端頁面時需要監控滑鼠滾輪,這導致在很短時間內,會觸發很多次函式,造成頁面卡頓堵塞,正巧自己在看github時看到了這個,所以自己記錄一下。

函式防抖就是讓某個函式在上一次執行後,滿足等待某個時間內不再觸發此函式後再執行,而在這個等待時間內再次觸發此函式,等待時間會重新計算。

underscore原始碼

_.debounce = function(func, wait, immediate)  else }};

return function()

return result;

};};

簡化版

var debounce = function ( fn, wait, immdediate) 

//每次進入函式,都重新計算過期時間

cleartimeout(timer);

timer = settimeout(function () ,wait);

}}

每間隔某個時間去執行某函式,避免函式的過多執行,這個方式就叫函式節流。節流和防抖動最大的不同就是,節流保證乙個時間段內至少會執行一次。可以想象成把水龍頭擰小,它主要用於大量連續事件快速頻繁觸發的場景,比如:onscroll,onresize。

underscore原始碼

_.throttle = function(func, wait, options) ;

var later = function() ;

return function()

previous = now;

if (!timeout) context = args = null;

} else if (!timeout && options.trailing !== false)

return result;

};};

簡化版

var throttle = function ( fn, interval ) 

if ( timer )

timer = settimeout(function () , interval || 500);

};};

防抖與節流方案 函式防抖和節流

在前端開發的過程中,我們經常會需要繫結一些持續觸發的事件,如 resize scroll mousemove 等等,但有些時候我們並不希望在事件持續觸發的過程中那麼頻繁地去執行函式。通常這種情況下我們怎麼去解決的呢?一般來講,防抖和節流是比較好的解決方案。讓我們先來看看在事件持續觸發的過程中頻繁執行...

函式防抖與節流

在前端開發的過程中,我們經常會需要繫結一些持續觸發的事件,如 resize scroll mousemove 等等,但在事件持續觸發期間頻繁的執行函式在很大程度上造成了不必要的浪費。通常這種情況下我們一般使用防抖和節流是這兩種解決方案。讓我們先來看看在事件持續觸發的過程中頻繁執行函式是怎樣的一種情況...

防抖與節流函式

場景 在開發搜尋框的過程中,為了防止高頻觸發,減少不必要的效能浪費。我們需要用一種機制來阻止高頻觸發 兩種實現方案 1.防抖函式 在一定時間內多次執行以最後一次執行為準 const debounce fn,duration return result 2.節流函式 在一定時間段內只執行一次 cons...