方法一
function mySetInterVal(fn, time1, time2) { let timer = {}; function start() { function setTimer(fn, time1, time2) { timer.id = setTimeout(() => { fn(); setTimer(fn, time1 + time2, time2); }, time1); } setTimer(fn, time1, time2); } function stop() { clearTimeout(timer.id); } return { start, stop } }
方法二
function mySetInterVal(fn, time1, time2) { this.time1 = time1; this.time2 = time2; this.time = 0; this.handler = -1; this.start = () => { this.handler = setTimeout(() => { fn(); this.time++; this.start(); }, this.time1 + this.time * this.time2); } this.stop = () => { clearTimeout(this.handler); this.time = 0; } }