1

我被困在一个地方。我想要做的是我 2 个函数,它们都异步运行。所以我发现了 jquery 的何时完成并考虑使用它。

有关我正在使用的代码,请参见下文:-

 $.when(doOne(42, PersonId))
.done(function (strDisplayMessage) {
    doTwo()
})


function doOne(systemMessageId, personId) {
    /* This function is used to make an AJAX call to the backend function to get all the customized system message. */
    $.ajax(
    {
        url: "/Communications/GetSpecifiedSystemMessageAndCustomizeIt",
        type: "POST",
        data: { intSystemMessageId: systemMessageId, guidPersonId: personId },
        dataType: "text",
        success: function (data) {
return data;
        },
        error: function (error) {
            return "Error!";
        }
    });
}

function doTwo(){
...//do something
}

但它们仍然异步运行。有人可以帮我吗?

谢谢

4

2 回答 2

5

您需要从返回 ajax 对象doOne

$.when(doOne(42, PersonId))
.done(function (strDisplayMessage) {
    doTwo()
})


function doOne(systemMessageId, personId) {
    /* This function is used to make an AJAX call to the backend function to get all the customized system message. */
   return $.ajax(
        {
            url: "/Communications/GetSpecifiedSystemMessageAndCustomizeIt",
            type: "POST",
            data: { intSystemMessageId: systemMessageId, guidPersonId: personId },
            dataType: "text",
            success: function (data) {
                return data;
            },
            error: function (error) {
                return "Error!";
            }
        });
}
于 2013-06-06T08:27:20.500 回答
0

您需要函数中return的结果:$.ajaxdoOne

function doOne(...) {
    return $.ajax({
        ...
    });
}

如果没有明确return的函数返回undefined$.when()哪个将导致它.done立即触发处理程序。

于 2013-06-06T08:27:18.567 回答