1

私はある場所で立ち往生しています。私がやりたいことは、I 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 に答える