js實現函數節流

應用場景:前端

1)前端點提交按鈕,防止用戶短時觸發屢次點擊;閉包

2)相似百度輸入直接AJAX請求關鍵字,延遲處理。app

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);
相關文章
相關標籤/搜索