防抖與節流常見的幾種實現方式
防抖在限制的時間內持續觸發事件的時候,函式是完全不執行的
非立即執行版,等最後一次觸發結束的一段時間之後,再去執行
function debounce(func, delay) , delay)
}}
立即執行版
function debounce(func,wait) , wait)
}}
雙劍合璧版
/**
* @desc 函式防抖
* @param func 函式
* @param wait 延遲執行毫秒數
* @param immediate true 表立即執行,false 表非立即執行
*/function debounce(func,wait,immediate) , wait)
}else , wait);}}
}
節流的意思是讓函式有節制地執行,而不是毫無節制的觸發一次就執行一次,在一段時間內,只執行一次。
function throttle(func, deley)
run = false // 持續觸發的話,run一直是false,就會停在上邊的判斷那裡
settimeout(() => , deley)
}}
實現防抖節流
防抖 debounce 不管事件觸發頻率多高,一定在事件觸發n秒後才執行,如果你在乙個事件觸發的 n 秒內又觸發了這個事件,就以新的事件的時間為準,n秒後才執行,總之,觸發完事件 n 秒內不再觸發事件,n秒後再執行。直接上 例如頁面視窗一直在改變 停止的是n秒後執行事件 window.onload ...
節流與防抖
瀏覽器中某些計算和處理要比其他的昂貴,例如在瀏覽器中操作dom比非dom互動需要更多的記憶體和cpu的事件,連續嘗試進行過多的dom相關操作可能ui導致瀏覽器掛起,有時甚至會崩潰。尤其在ie中使用onresize事件處理程式的時候容易發生,當調整瀏覽器大小的時候,該事件會連續觸發。在onresize...
防抖與節流
防抖 當事件持續觸發,一定時間內沒有觸發事件函式處理一次。比如輸入框的ajax請求做模糊查詢 節流 當時間持續觸發,在一秒內只能觸發一次。比如滾動條持續向下滾動,載入更多資料 function debounce fn,wait function throttle func,delay functio...