函數防抖和函數節流的最簡單解釋

函數防抖:連續觸發的事件,只會觸發最後一次。每次觸發的時候都會清除上一次待觸發的。函數

const debounce = (func, wait) => {
  let timer;

  return (params) => {
    clearTimeout(timer);
    timer = setTimeout(() => {
    func(params);
}, wait); }; };

函數節流:連續觸發的事件,會按照必定的頻率觸發N次。每間隔必定的時間,必然會觸發一次。spa

const throttle = (func, wait) => {
  let timer;

  return (params) => {
    if (timer) {  // timer 存在則不會加入待執行中
      return;
    }

    timer = setTimeout(() => {
      func(params);
      timer = null;  // 間隔必定時間後執行一次,執行完後清空 timer 可再次執行
    }, wait);
  };
};
相關文章
相關標籤/搜索