應用場景:
1)前端點提交按鈕,防止用戶短時觸發多次點擊;
2)類似百度輸入直接AJAX請求關鍵字,延遲處理。
function debounce(func, delay) { let timer;
// 通過閉包使timer一直存在內存中 return function (...args) { if (timer) { clearTimeout(timer);
} timer = setTimeout(() => { func.apply(this, args); //通過apply還原this指向事件 }, delay) } }
// 點擊元素1秒后執行,如果1秒內重復點擊會清空之前定時,重新生成定時器! document.querySelector('.demo').addEventListener('click',debounce((e)=>{ // 需要執行的代碼 console.log(e); },1000),false);