当调用设置的间隔函数时触发倒计时

Trigger a countdown when a set interval function is called

我每 60 秒通过 ajax get 检索一个随机用户。此外,我想触发一个计时器,指示用户何时显示下一个 'random user'。

我尝试创建两个单独的函数,一个用于 ajax 获取,另一个用于计时器。这些函数在 setinterval 函数中调用。但是,这不能正常工作。

<script type="text/javascript">
        window.onload = function random_user() {

            /*ajax request*/
            $.ajax({
                type: "get",
                url: "random_user.php",
                async: "false",
                success: function (data) {
                    $('#random_user').html(data);
                    console.log(data)
                }
            });

            /*Countdown script*/
            function countdown() {
                var counter = 60;
                var interval = setInterval(function () {
                    counter--;
                    if (counter <= 0) {
                        clearInterval(interval);
                        return;
                    }else{
                        $('#time').text(counter);
                        console.log("Timer --> " + counter);
                    }
                }, 1000);
            }

            /*Final function call*/
            setInterval(function () {
                random_user();
                countdown();
            }, 60000); //60000 milliseconds = 60 seconds
        }
    </script>


    <ul class="accordion">
        <li>
            <a>1 user - <span id="time">60</span> sec</a>
            <div class="dropdown">
                <div id="random_user"></div>
            </div>
        </li>
    </ul>

非常感谢任何帮助,因为我对 php 和 javascript 比较陌生。 最好的问候

您不需要两个单独的时间间隔。如果计数器==0,您的倒数计时器可以调用random_user()

最后简单的在ajax请求成功后开始倒计时。

 window.onload = function random_user() {

   /*ajax request*/
   $.ajax({
     type: "get",
     url: "random_user.php",
     async: "false",
     success: function(data) {
       $('#random_user').html(data);
       console.log(data);
       countdown();
     }
   });

   /*Countdown script*/
   function countdown() {
     var counter = 60;
     var interval = setInterval(function() {
       counter--;
       if (counter == 0) {
         clearInterval(interval);
         random_user();
       } else {
         $('#time').text(counter);
         console.log("Timer --> " + counter);
       }
     }, 1000);
   }
 }

你也可以这样试试

function randomUser() {
        $.ajax({
            type: "get",
            url: "random_user.php",
            async: "false",
            success: function (data) {
                $('#random_user').html(data);
                scheduleNext()
                startCounter();
            }
        });

    }

   function startCounter() {
    const counter = 1;
        setInterval(() => {
            $('#time').text(counter);
            counter++;
        }, 1000)
    }

    function scheduleNext() {
        setTimeout(() => {
            $('#time').text('getting next user...');
            random_user();
        }, 60000)
    }

    randomUser();