自定义clearInterval

下面是我用clearTimeout实现的一个clearInterval效果,
如何不用clearTimeout()、clearInterval()实现一个自定义的clearInterval()呢?
@小蓝阿姨 @Z_ One Dream

//myclearInterval
function myInterval(func, time) {
  let ids = [];
  function fn() {
    let id = setTimeout(() => {
      func();

      fn();
    }, time)
    //console.log(id);
    ids.push(id);
  }
  fn();
  return ids;
}
function clearMyInterval(idList) {
  idList.forEach((id) => {
    clearTimeout(id);
    //clearInterval(id)
  })
}
function myclearInterval(id) {
  setTimeout(() => {
    clearMyInterval(id)
  }, 0)
}
//-----------------------------------------
var num=0;
let id = myInterval(() => {
  //document.write('Hello World');
  num++;
   if(num===5) myclearInterval(id)
  //console.log(num);
  //   clearMyInterval(id)
  console.log(num);
}, 1000)

1、setinterval的逻辑本身呢,他是将设定的任务存到内存中,并且添加定时任务,使其定时执行,这就是不建议用setinterval的意思;
2、而且setInteral在浏览器切换之后,还会继续执行,这也是造成内存泄漏的一个原因;
3、setinterval也可以表达为一个无限递归执行的函数
4、所以,要杀死他,意思就是使整个递归中增加了一层 中断 的判断,所以在自定义的这个setinterval中,中断判断是重点呗

如果是不想用clearTimeout()、clearInterval()中断一个定时器的话,目前好像还没有什么好的解决方案。
如果非要不用那个的话可以直接手动抛出一个异常throw new Error('time end'),前提是你没有运行底下代码的需求。

有内置现成的不用,非要自己自定义去写?且不说你自己写的会不会比内置现成的好,哪怕你自己写,你要考虑很多情况,花的时间多就不说了吧,但你确定你能考虑到所有情况么?