运行代码的javascript顺序

时间:2014-03-12 19:30:04

标签: javascript

我的网页上有以下代码:

   <script type="text/javascript">        
        debugger;  // 1
        var dataClassObj = new DataClassList();
        dataClassObj.init();
        var viewModel = dataClassObj.getModel();
        debugger; // 2
   </script>

在js文件中我有:

var DataClassList = function () {
};

DataClassList.prototype = function () {
var viewModel;

// private memebers
var init = function () {
        var self = this;
        $.ajax({
            url: "xxx",
            type: 'GET',
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
                    // code
                });

                // code
                self.viewModel = viewModel;
                ko.applyBindings(viewModel);
                debugger;  // 3
            },
            error: function(xhr, status, error) {
                $('#lblError').show();
            }
        });
    },
    getModel = function () {
        debugger;  // 4
        return viewModel;
    };

// public members
return {
    init: init,
    getModel: getModel
};

}();

当我使用Chrome的开发者工具运行时,点击调试器点。我认为它将在1-> 3-> 4-> 2中运行,但它总是以此顺序命中调试器语句1-&gt; 4-&gt; 2-&gt; 3我迷茫了至于它为什么这样做,我认为Javascript是同步的,所以它会点击1,然后调用init,这将触发3,然后调用4,最后调用2。

2 个答案:

答案 0 :(得分:2)

$ .ajax是异步的。在其他代码运行后(通常),它将执行该调用。

答案 1 :(得分:0)

JavaScript是同步的,除了ajax调用,setTimeout()和setInterval()。