Jquery完成后工作不正常

时间:2013-06-06 08:25:21

标签: jquery

我被困在一个地方。 我想要做的是我的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
}

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

感谢名单

2 个答案:

答案 0 :(得分:5)

您需要从doOne

返回ajax对象
$.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!";
            }
        });
}

答案 1 :(得分:0)

return函数中$.ajax的结果需要doOne

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

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