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;
});

目前我得到的结果是 GET_allSystems() 而不是我通常会得到的实际 json 数据。

我想通过该函数传递 ajax 调用,因为它允许我知道 AJAX 调用当前是否正在处理中,并且它只是提供了我想要的抽象级别。

很明显我做错了什么,但我想 $.done 会在 ajax 调用完成并将结果传回时执行......但这里似乎并非如此。

4

1 回答 1

2

您需要调用performAjaxCall

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

performAjaxCall返回一个由$.when.

于 2013-02-14T14:35:15.783 回答