今天刷文章的时候,看到有一个人面试的时候遇到这么一个面试题
使用setTimeout实现setInterval
然后就做起来实现了一下,包含两部分,对应于setInterval,clearInterval
setInterval实现
const mySetInterval = (func: Function, time: number) => {
let timer: any = [];
function setInterval() {
timer[0] = setTimeout(() => {
func();
setInterval();
}, time);
}
setInterval();
return timer;
};
clearInterval实现
function myClearInterval(timer: any) {
if (timer[0]) {
clearTimeout(timer[0]);
}
}
测试如下
const timer = mySetInterval(() => {
console.log("---");
}, 1000);
setTimeout(() => {
myClearInterval(timer);
}, 6050);