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; }, }; }