代码执行顺序

时间:2012-10-17 12:20:57

标签: javascript ajax

function method1() {
    method2();
    var x = 1;
}

function method2() {
    $.ajax({
        type: "GET",
        async: true,
        url: "/MyController/MyMethod",
        success: function (data) {
            var y = 6;
        }
    });
}

首先发生 - y的初始化或x的初始化? 如果ajax调用是sync而不是async,那么这两行的顺序是什么?

在加载页面时调用method1。

2 个答案:

答案 0 :(得分:2)

如果它是同步的并且如果GET成功则首先初始化Y.如果它是异步的,它可能也是,但是我把钱放在X上只是因为我怀疑它会在web方法返回之前继续。据说不能保证X先被解雇。

答案 1 :(得分:1)

x将首先被初始化(除非在某种程度上HTTP响应在它能够执行下一行之前返回,这是极不可能的)。 $ .ajax是异步的,响应回来需要时间。

如果你想保证y首先被初始化,你可以这样做:

function method1() {
    method2(function()
    {
        var x = 1;
    });
}

function method2(callback) {
    $.ajax({
        type: "GET",
        async: true,
        url: "/MyController/MyMethod",
        success: function (data) {
            var y = 6;
            callback();
        }
    });
}