簡體   English   中英

如何防止 PHP sleep function 停止我的 HTML 頁面

[英]How do I prevent PHP sleep function from stopping my HTML page

我目前正在嘗試編寫一個骰子游戲。 當用戶單擊“播放”時,骰子將開始變化。 一個是用戶的,一個是服務器的。 發生這種情況時,我的 PHP 頁面將等待 5 秒,然后計算一個隨機數。 然后它將它發送到 HTML 頁面,一旦 HTML 收到它,它將停止骰子並宣布獲勝者。 我目前卡在 PHP 部分並嘗試使用睡眠 function。 但是,當我這樣做時,如果我點擊播放,骰子在收到數字之前不會移動,然后它會開始洗牌。 到目前為止,這是我的代碼。

HTML/JS

<body>
    <h1>Brandon Wong</h1>
    <input type="button" id="play" value="Play">
    <div id = "userDie"></div>
    <div id = "serverDie"></div>
    <script>
        document.querySelector('input[type]').addEventListener('click', toss_dice);

        //display default dice*/
        var userDie = document.createElement('img');
        var serverDie = document.createElement('img')
        userDie.src = '1.gif';
        serverDie.src = '1.gif';
        document.getElementById('userDie').appendChild(userDie);
        document.getElementById('serverDie').appendChild(serverDie);

        function toss_dice() {
            var dice = ['1.gif', '2.gif', '3.gif', '4.gif', '5.gif', '6.gif'];
            var randPlayer2 = 0;
            setInterval(function(){
                var randPlayer1 = Math.floor(Math.random() * dice.length);
                var randPlayer2 = Math.floor(Math.random() * dice.length);
                userDie.src = dice[randPlayer1];
                serverDie.src = dice[randPlayer2];
                document.getElementById('userDie').appendChild(userDie);
                document.getElementById('serverDie').appendChild(serverDie);
                //alert(randPlayer1);
            }, 500);

            request = new XMLHttpRequest();
            request.open('GET', 'hw02.php', false);
            request.send(null);

            var test = request.responseText;
            alert(test);
        }

    </script>

PHP

<?php 
    sleep(5); 
    $number = rand(0,5); 
    echo $number:
?>

這是我頁面的鏈接,以查看我的頁面到目前為止

您的請求當前使用, false表示阻塞請求。 這將阻止動畫和其他 JS 等在請求進行時在頁面上運行。 同步請求已被棄用,並可能導致糟糕的用戶體驗(如您所見) - 請改用適當的異步請求。

request.addEventListener('readystatechange', () => {
  if (request.readyState === 4) {
    console.log(request.responseText);
  }
});
request.open('GET', 'hw02.php');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM