使用 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 被执行。
我正在使用 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 被执行。