前端防抖節流

2021-09-25 12:45:08 字數 485 閱讀 7093

防抖和節流是前端最基本的效能優化,在繫結監聽事件onmousemove,onmousewheel時,如果觸發過於頻繁,在一次觸發尚未執行完時又再次觸發,就會造成瀏覽器丟幀,進而影響使用者體驗,防抖和節流就是為了解決這個問題。

防抖:在事件觸發n秒後再執行這個函式,如果在n秒內又觸發則重新計時

function antishake(fn,time=300){

let timeout=null;

return function(){

cleartimeout(timeout);

timeout=settimeout(()=>{

節流:在單位時間內如果多次觸發則只執行一次

function throttle(fn,timeout=300){

let run=true;

return function(){

if(!run)return;

run=false;

前端防抖與節流

在某些高頻度觸發的事件中繫結操作需要用到節流函式。最常見的打個栗子,如果要在window的滾動事件中傳送ajax請求載入更多資料。有需要的童鞋可以把此段複製到html檔案中自行檢視效果。我們來看看此時頁面的表現效果。此時我們可以看到console.log 1 被高頻度觸發。如果此時scroll裡面觸...

前端的防抖和節流

防抖和節流都是優化高頻率執行js的方法 dom 結構 123js 結構 var jh 1 var jhbt document.getelementbyid jh 防抖 只有等空閒時間才去執行,比如搜尋框功能,如果快速一直按鍵,難道每輸入乙個鍵就去後台匹配然後渲染嗎?等使用者輸入完整關鍵字在去後台匹配...

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

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