js代码-防抖函数(立即执行和非立即执行)

防抖

即执行
 function debounce(fn, delay) {
   let timeid=null, flag = true;
   return function () {
     clearTimeout(timeid);
     if (flag) {
       fn();
       flag = false;
     } else {
       timeid = setTimeout(function () {
         flag = true;
       }, delay);
     }
   }
 }
 document.getElementById("myBtn").addEventListener("click", debounce(() => {
   console.log('调用成功');
 }, 3000));
//非立即执行
function debounce(fn, delay) {
  let timeid = null;
  return function () {
    if (timeid) {
      clearTimeout(timeid);
    }
    timeid = setTimeout(fn, delay);
  }
}
document.getElementById("myBtn").addEventListener("click", debounce(() => {
  console.log('调用成功');
}, 2000));
上一篇:防抖与节流


下一篇:debounce防抖函数减少函数调用的逻辑分析(包裹上时间的外衣,在时间还没来时,kill)