防抖和節流函式

2022-08-16 18:24:14 字數 870 閱讀 5502

防抖就是將函式的指定間隔內的多次執行變成一次,而節流是在間隔時間內必須且只能執行一次。雖然結果差不多,但是原理並不同,而且有細微的區別

防抖的實現

function debounce(fn,delay=1000),delay);

}}

節流的實現

function throttle(fn,delay=2000),delay)

} else

}}

測試效果

普通的input

防抖的input

節流的input

//模擬ajax

function ajax(content)

let inputa = document.getelementbyid("normal");

inputa.addeventlistener('keyup', function (e));

// 在2s內沒有輸出才會執行函式。

// 但如果在2s停止輸出然後又開始輸出,計時器會重新開始計時

let debounceajax = debounce(ajax)

let inputb = document.getelementbyid("debounce");

inputb.addeventlistener('keyup',function (e));

// 無論你怎麼幹2s內只會執行一次

let throttleajax = throttle(ajax);

let inputc = document.getelementbyid("throttle");

inputc.addeventlistener('keyup', function(e))

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

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

函式防抖和節流

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

函式防抖和節流

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