# 用setTimeout实现setInterval

递归实现,每隔一秒打印一次名字

let timer = null
    function mockSetInterval(fn, delay, ...args) {
      const recur = function () {  // 定义一个递归函数
        timer = setTimeout(() => {
          fn.apply(this, args)
          recur() // 递归调用
        }, delay)
      }
      recur() // 第一次调用
    }

    mockSetInterval((name) => {
      console.log(name);
    }, 1000, 'janet')
1
2
3
4
5
6
7
8
9
10
11
12
13
14