setTimeout模拟setInterval 使用闭包 以及终止的写法

function mySetInterval(fn, t){
    let timer = null;
    function interval(){
        fn();
        timer = setTimeout(interval, t)
    }
    interval();
    return {
        clear: ()=>{
            clearTimeout(timer)
        }
    }
}
let a = mySetInterval(()=>{
    console.log('xxx')
},1000)  //调用,该行后会自动调用开始执行

a.clear(); //终止运行

朋友字节前端面试碰到过的一个题目,网络上其他的许多都是使用全局变量或者别的。显然还是比较low的,上述是一个使用闭包的写法,并使用clearTimeout提供一个停止功能。

posted @ 2022-07-26 17:52  zzzlight  阅读(146)  评论(0编辑  收藏  举报