[英]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.