防抖

防抖:动作绑定事件,动作发生一定时间后触发事件,在这段时间内,如果该动作又发生,则重新等待一段时间后再触发事件。(触发会重新等待一段时间再触发事件)

function debounce(func, time) {
  let timer = null;
  return () => {
    clearTimeout(timer);
    timer = setTimeout(() => {
      func.apply(this, arguments);
    }, time);
  };
}

节流

节流:动作绑定事件,动作发生后一段时间后触发事件,在这段时间内,如果该动作又发生,则无视该动作,直到事件执行完后,才能重新触发。(等待一定的时间后才会重新触发)

function throtte(func, time) {
  let activeTime = 0;
  return () => {
    const current = Date.now();
    if (current - activeTime > time) {
      func.apply(this, arguments);
      activeTime = Date.now();
    }
  };
}

Q.E.D.