JS手写练习随笔-20221210.2 ---- 使用setTimeout模拟setInterval

由于 window.setInterval 定时器方法自身存在一些弊端以,所以在实践中通常使用 setTimeout 方法来模拟 setInterval。

#TS版

type ISetIntervalReturn = {
  cancel(): void;
};

function _setInterval(fn: Function, interval: number = 0): ISetIntervalReturn {
  let timer: number | null = null;
  const handler = () => {
    fn();
    timer = window.setTimeout(handler, interval);
  };
  handler();
  return {
    cancel: () => {
      if (timer === null) return;
      window.clearInterval(timer);
      timer = null;
    },
  };
}

 

posted @ 2022-12-10 15:01  樊顺  阅读(66)  评论(0编辑  收藏  举报