1

我对自己制作的程序感到非常困惑。几天前,它工作得很好,但现在我在初始化它时遇到了问题。我想我已经弄清楚问题的根源基本上是程序的流程是乱序的,但我不知道为什么。有人知道如何调试吗?

调试调用堆栈:

这个

       function init() {
            createKeyArray();
            createData();
                }
        ;

或者这个(createKeyArray)

    function createKeyArray(){
         $.getJSON("reps.json", function(data) {
            $.each(data, function(key, val) {
                console.log(key);
                keyarray.push(key);
            });
        })
        .fail(function(){
        console.log("JSON extraction failed.");
        });

 };

现在在这段时间里,createKeyArray这是真正令人困惑的地方,它转到.getJSON,运行它,然后转到我的createData函数(跳过$.each将所有内容推入 keyarray.

然后它运行createData然后返回到函数的.each一部分createArray,运行它,然后完成运行程序的其余部分。

我非常困惑发生了什么以及如何解决它。感谢任何建议。

4

1 回答 1

0

我明白了,但感谢大家的帮助。我只是对异步的工作方式感到困惑。在发布之前我已经查看过它,但我想我最终不明白它是如何工作的。我重做的.getJSON方法,这次成功了

 function createKeyArray() {

            $.ajax({
                url: "sdf.json",
                dataType: 'json',
                async: false,
                success: function(data) {
                    $.each(data, function(key, val) {
                        keyarray.push(val);
                    });
                }});



        }
        ;

老实说,我仍然不太确定异步操作的运行时是如何工作的。我想我暗示的是,如果有人能启发我计算机如何确定何时在异步调用上运行回调函数,我将不胜感激。否则,上面的代码就是答案。

于 2013-11-14T22:50:38.910 回答