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

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

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

在加载页面时调用 method1。

4

2 回答 2

2

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

于 2012-10-17T12:27:30.023 回答
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();
        }
    });
}
于 2012-10-17T12:30:08.150 回答