如何暂停for循环中的setTimeout

循环中的计时器可匀速每隔一段时间执行一遍,在执行过程中如果暂停计时器,然后再继续执行并实现无缝衔接可以试试以下方法

    <button class="start">开始</button>
    <button class="zt">暂停</button>
    <script>
        var arr=[1,2,3,4,5,6,7,8,9,10,11,12]
        var sts=[];
        var num=0;
        $(".start").on('click',function(){
            eachdiv()
        })
        $(".zt").on('click',function(){
            for (var i = 0; i < sts.length; i++) {
              clearTimeout(sts[i]);
            }
            return
        })
        function eachdiv(){  
            var b=0; 
           for (var i = num; i < arr.length; i++) { 
               (function (t,s) {
                     sts.push(setTimeout(function () {
                           num=t
                           console.log(arr[t]); 
                       }, 3000 * s))
               })(i,b)
               b++      
           }
        }
    </script>

 

posted @ 2022-07-21 17:49  路lulu  阅读(280)  评论(0)    收藏  举报