其他分享
首页 > 其他分享> > setTimeout模拟setInterval,使用闭包,且可以终止的写法

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提供一个停止功能。

标签:闭包,function,setInterval,interval,clearTimeout,timer,let,setTimeout
来源: https://www.cnblogs.com/zzzlight/p/16521975.html