防抖原理以及簡單實現

王東煜發表於2019-10-09
//在連續觸發某個函式時,只在最後一次讓對應的函式執行
function debounce(fn,wait){//debounce處理過的函式都是防抖函式
wait = wait || 1000;
var timer = null;//建立一個標記 用來存放定時器的返回值
 return function (){
   clearInterval(timer);//每當使用者輸入的時候把前一個setTimeout清除掉
   timer = setInterval(()=>{//然後又建立一個新的setTimeout,這樣就能保證輸入的字元後的interval 間隔內如果還有字元輸入的話,就不會執行fn 函式
       fn.apply(this,arguments);
   },wait)
 }
}
let fn = function(){console.log(this)}
let f = debounce(fn,1000)
window.onscroll = f;
複製程式碼

相關文章