使用 setInterval 更新全局变量不起作用

Update Global var with setInterval Not Working

我正在使用 Phaser 3 构建游戏。我有一个 ajax 调用,我想每秒调用一次以获取玩家数据,如下所示:

//Var is globally declared
var player1type;

create() {


 setInterval(function() {   

        function gameWaitingroom(getWaitingroom) {      

            $.ajax({
                type: "GET",
                url: '../includes/waitingroomcheck.php',
                cache: false,
                success: getWaitingroom


            });

        }
                // resolve/success callback

                gameWaitingroom(result => { 
                    try {
                        var waitingRoomData = JSON.parse(result);
                    }
                    catch (error) {
                        console.log('Error parsing JSON:', error, result);
                    }

                    //status = waitingRoomData.statusCode;
                    player1type = waitingRoomData.player1type;
                    console.log("INSIDE INTERVAL: "+player1type);

                }); 

    },1000);

console.log("OUTSIDE INTERVAL: "+player1type);

}

我的控制台显示如下:

INSIDE INTERVAL: user
OUTSIDE INTERVAL: undefined

为什么 var player1type 在 setInterval 之外未定义,但它在内部工作得很好,即使我已经全局声明了它?

那是因为当脚本第一个运行时,setInterval()中的代码将花费1s执行,而它之外的代码将立即执行。所以当 console.log("OUTSIDE INTERVAL: "+player1type); 被执行时,它的值将是 undefined 那是因为 player1type = waitingRoomData.player1type; 仍然会等待 1s 被执行。