对于in循环不使用全局命名空间变量

时间:2016-09-02 02:18:40

标签: javascript ajax asynchronous canvas for-in-loop

我正在制作一个画布动画/游戏,我在其中一个函数中遇到for循环问题。在兴趣空间中,我删除了一些代码。

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();
   }
}

for循环中每次都失败(永远不会进入循环),即使对象中有项目。我认为它可能是一个悬挂问题,所以我将所有变量放在脚本顶部的命名空间中并重新安排我的功能。我认为它也可能是一个异步问题,因为当我使用调试器逐步执行该函数时该函数可以工作,但如果是这种情况,那么我不知道如何修复它。

1 个答案:

答案 0 :(得分:0)

function LoadFrames(){
            //xhr request
            // if successs load json data into namespace variable
            // get canvas
            // drawImage Loading Screen
            // return true
}

XMLHttpRequest中的LoadFrames可以异步工作,而LoadFrames可以同步工作。 LoadFrames始终在发送AJAX请求后立即返回true ,无论是否加载了帧(可能是game.frames?);即它不会检查请求的响应。