Skip to content

实现自定义定时器

要求间隔时间越来越长,如a, a+b, a+2b ... a+nb,并能取消定时器

js

function myInterval(fn, a, b) {
    let count = 0;
    let timer;

    function run() {
        fn();
        count++;
        timer = setTimeout(run, a + count * b);
    }

    run();

    return {
        cancel: () => clearTimeout(timer)
    };
}

// 测试
const myIntervalInstance = myInterval(() => {
    console.log('执行任务');
}, 1000, 500); // 初始间隔1秒,之后每次增加0.5秒

// 取消定时器
myIntervalInstance.cancel()