簡體   English   中英

使用 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()中的代碼時,將需要 1 秒才能執行,而外部的代碼將立即執行。 所以到時候console.log("OUTSIDE INTERVAL: "+player1type); 被執行,它的值將是undefined的,這是因為player1type = waitingRoomData.player1type; 仍將等待 1s 被執行。

暫無
暫無

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

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