在平常开发中,我们很少用到setInterval。因为在事件循环中,setInterval的延迟可能会积累,所以setTimeout比setInterval要准确。接下来就用setTimeout来模拟实现setInterval。
function mySetInterval(fn, timeout) {
const timer = {
flag: true
}
function foo() {
if (timer.flag) {
fn();
setTimeout(foo, timeout)
}
}
setTimeout(foo, timeout);
return timer;
}
//测试
mySetInterval(function () { console.log(1); }, 1000)
记录记录!