首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止PHP睡眠函数停止HTML页面

如何防止PHP睡眠函数停止HTML页面
EN

Stack Overflow用户
提问于 2021-02-21 13:12:52
回答 1查看 27关注 0票数 3

我目前正在尝试写一个骰子游戏。当用户点击“播放”时,骰子将开始改变。一个是用户的骰子,一个是服务器的骰子。当这发生时,我的PHP页面将等待5秒,然后计算一个随机数。然后它会把它发送到HTML页面,一旦HTML收到它,它就会停止掷骰子并宣布一个赢家。我现在被PHP部分卡住了,并尝试使用睡眠函数。但是,当我这样做时,如果我点击播放,骰子将不会移动,直到它收到数字,然后它将开始洗牌。到目前为止,这是我的代码。

HTML/JS

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
<?php 
    sleep(5); 
    $number = rand(0,5); 
    echo $number:
?>

这是我的页面的link,可以查看到目前为止我的页面

EN

回答 1

Stack Overflow用户

发布于 2021-02-21 13:16:20

您的请求当前正在对阻止请求使用, false。这将阻止动画和其他JS等在请求进行过程中在页面上运行。同步请求已被弃用,可能会导致糟糕的用户体验(如您所见)-请使用适当的异步请求。

代码语言:javascript
运行
复制
request.addEventListener('readystatechange', () => {
  if (request.readyState === 4) {
    console.log(request.responseText);
  }
});
request.open('GET', 'hw02.php');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66299364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档