1

私はAJAX呼び出しを呼び出しており、ajax呼び出しを呼び出すたびに、それを関数に渡して処理します。これを行うのは、一度に AJAX リクエストのカウンターを保持しているためです (主に開発目的で使用します)。AJAX 呼び出しの結果を取得して、そのデータを操作しようとしています。

わかりやすくするために、いくつかのコードを貼り付けてみましょう。

function GET_allSystems() {
    return $.ajax({
        type: "GET",
        url: getSystemUrl(), // Unimportant, I call the url from a method
        cache: false,
        dataType: "json"
    });
}

// This will automatically increment and decrement the semaphore variable
// and execute functions when AJAX call is done.
function processAjaxCall(performAjaxCall, doFunctionWhenDone) {
    ajaxCall++;
    $.when(performAjaxCall).done(function (result) {
        ajaxCall--;
        doFunctionWhenDone(result);
    });
}

// I process the ajax to get all system information then put it in an object
processAjaxCall(GET_allSystems, function (result) {
    systemMap["systems"] = result;
});

現在、通常取得するデータの実際の json ではなく、結果として関数 GET_allSystems() を取得しています。

AJAX呼び出しが現在処理中かどうかを知ることができ、希望する抽象化のレベルを提供するだけなので、その関数を介してajax呼び出しを渡したいと思います。

明らかに私は何か間違ったことをしていますが、ajax呼び出しが終了すると $.done が実行され、結果が返されると想像します...しかし、ここではそうではないようです。

4

1 に答える 1

2

呼び出す必要がありますperformAjaxCall:

function processAjaxCall(performAjaxCall, doFunctionWhenDone) {
    ajaxCall++;
    $.when(performAjaxCall()/* Call the function */).done(function (result) {
        ajaxCall--;
        doFunctionWhenDone(result);
    });
}

performAjaxCallによって使用される ajax promise オブジェクトを返します$.when

于 2013-02-14T14:35:15.783 に答える