setInterVal长时间运行卡顿,采用setTimeout代替setInterval

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let Fn=function(){
            console.log(111)
        }

        let goodnessTime=function(callback,n){
            let time=setTimeout(()=>{
                clearTimeout(time)
                time=null
                callback()
                return goodnessTime(callback,n)
            },n)
        }
        goodnessTime(Fn,1000)
    </script>
</body>
</html>


 

测试成功:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>采用setTimeout代替setInterval</title>
</head>

<body>

    <script>
        let Fn = function () {
            console.log('执行方法')
        }

        var myDate = null;
        let timeLoop = function (callback, n) {
            let time = setTimeout(() => {
                console.log('计时器', time);
                clearTimeout(time)
                time = null
                
                //测试
                myDate = new Date();
                console.log('倒计时结束,清除计时器', time, "当前时间:", myDate.toLocaleTimeString());
               
                //递归
                callback()
                return timeLoop(callback, n)
            }, n)
        }
        timeLoop(Fn, 1 * 60 * 1000)
        Fn(); //初始执行一次
    </script>
</body>

</html>

 

image

 引用地址:https://blog.csdn.net/qq_40207505/article/details/121348967

posted @ 2025-12-01 15:15  Shimily  阅读(2)  评论(0)    收藏  举报