如何暂停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 @   路lulu  阅读(271)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示