在循环结束时添加暂停

Adding Pause at end of Loop

本文关键字:添加 暂停 结束 循环      更新时间:2023-09-26

下面的代码工作正常,直到我尝试在其中添加暂停。 基本上,它会循环并且看起来很正常,但几次之后它就会追上自己并引起很多奇怪的反应。 我很好奇是否有更好的方法来实现我的目标。

var popups = $('.animate');
var i = 0;
var pT = 2000;
function animatePopup() {
    if (i >= popups.length){
        i = 0;
    }
    popups.eq(i).addClass("show")
       .delay(2000)
       .queue(function() {
           $(this).removeClass("show");
           $(this).dequeue();
           if (i == popups.length) {
                setInterval(animatePopup, pT);
           } else {
                animatePopup();
           }
       });
    i++;
}
animatePopup();

使用 setTimeout 而不是 setInterval

setInterval间隔运行代码/函数,它们之间的超时长度,但它会继续运行它们。另一方面,setTimeout在指定时间结束时运行一次

这是一个片段,如果你把setTimeout改回setInterval你会看到它也变疯了

function recurrentDelayedFunction() {
  
    $('#out').append('ran<br>');
  
    setTimeout(recurrentDelayedFunction, 2000);
}
recurrentDelayedFunction();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id=out></div>