js中的防抖函數


舉個例子:   

    我們直接執行了一個 refresh(),這個refresh函數會被執行30次,

    這樣的話就太過於頻繁了,我們就可以將refresh放入防抖函數中去,生成一個新的函數,之后,我們就使用新的函數

    這個新生成的函數,並不會非常頻繁的調用,如果下一次執行來的非常快,那么會將上一次的取消掉;

 

 

    上面說的可能有些抽象了,看看下面的代碼,估計會好理解一些

    

 
         
    /**
     * 封裝一個防抖動方法
     * debounce: 防抖函數,  它的兩個參數=>  func:函數(要進行防抖的函數)    delay: 毫秒(傳入一個時間限制,毫秒)
     * let timer = null;  聲明一個timer為null
     * if(timer) clearTimeout(timer) ===============> 如果timer不為空,那么清空它(干掉他)
     * 
     * delay :傳入的毫秒,在這也就是延遲時間
     */
    debounce(func, delay) {
      let timer = null;
      return function(...args) {
        if (timer) clearTimeout(timer);
        timer = setTimeout(() => {
          func.apply(this, args);
        }, delay);
      };
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM