Я работаю над анимацией/холстом холста, и у меня возникают проблемы с циклом for in в одной из моих функций. В пространстве интересов я удалил некоторый код.Для цикла, не работающего с глобальной переменной пространства имен
function LoadScene(){ // function with the issue
console.dir(game.frames); //195 objects 0{}, 1{}, 2{}, etc.
for (var prop in game.frames){
console.log(prop); //Does not get here
if (game.frames[prop].scene == game.currentScene){
game.sceneData.push(game.frames[prop]);
}
}
}
function LoadFrames(){
//xhr request
// if successs load json data into namespace variable
// get canvas
// drawImage Loading Screen
// return true
}
function StartGame(){
if(LoadFrames()){
LoadScene();
}
}
для в цикле просто не может каждый раз (никогда не переходит в петлю), даже если есть элементы в в объекте. Я думал, что это может быть проблема с подъемом, поэтому я поместил все мои переменные в пространство имен в верхней части скрипта и изменил свои функции. Я думаю, что это также может быть проблемой async, поскольку функция работает, когда я использую отладчик для выполнения этой функции, но если это так, я не знаю, как это исправить.
'просто терпит неудачу' каким образом? ошибка в консоли? никогда не входит в цикл? кастрирует вашу собаку? –
* «Я думаю, что это тоже может быть асинхронная проблема» * - Я думаю, что это все. Можете ли вы вызвать 'LoadScene()' из кода 'LoadFrames()' Ajax или использовать механизм обещаний или обратного вызова, чтобы дождаться завершения загрузки? – nnnnnn
Вам нужно вызвать 'LoadScene()' из функции 'xhr.onreadystatechange'. – Barmar