最新,在react新項目的開發中使用到了lodash類庫的debounce方法,就隨手梳理了一下此方法的方便之處
未使用debounce之前
如果不考慮使用debounce,那么在用戶連續點擊的情況之下,會在每一次點擊之后就會執行自定義函數的回調,這時如果你的回調中處理一些比較消耗內存的一些操作,或者調用接口之類,那么可能會導致阻塞甚至於項目崩潰。
例如:
window.addEventListener('click', function (event) { var p = document.createElement('p') p.innerHTML = 'trigger' document.body.appendChild(p) })
此時的每一次點擊都會觸發dom元素的改變,如果連續點擊的情況下后果可想而知
引入debounce
window.addEventListener('click', debounce(function (event) { var p = document.createElement('p') p.innerHTML = 'trigger' document.body.appendChild(p) return 'aaaa' }, 500))
這樣,即使用戶連續點擊,那么也只有在最后一次點擊的500ms
后,真正的函數func
才會觸發。
這只是對debounce的初步了解,后續更新中