防抖和節流啥區別,實現一個防抖和節流

防抖

在必定時間內執行一次,若是在此時間內再次觸發,則從新計時app

const debounce = (func, timeout, immediate = false) => {
  let timer = null;
  return function (...args) {
    if (!timer && immediate) {
      func.apply(this, args);
    }
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      func.apply(this, args);
    }, timeout);
  }
}

節流

在必定時間內執行一次,若是在此時間內再次觸發,則會攔截不執行this

const throttle = (func, timeout) => {
  let timer = null;
  return function (...args) {
    if (!timer) {
      timer = setTimeout(() => {
        timer = null;
        func.apply(this, args);
      }, timeout);
    }
  }
}
相關文章
相關標籤/搜索