我正在调用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调用,它只是提供了我想要的抽象级别。
很明显我做错了什么,但我想会在ajax调用完成后执行$ .done并将结果传回...但这似乎不是这种情况。
答案 0 :(得分:2)
您需要调用performAjaxCall
:
function processAjaxCall(performAjaxCall, doFunctionWhenDone) {
ajaxCall++;
$.when(performAjaxCall()/* Call the function */).done(function (result) {
ajaxCall--;
doFunctionWhenDone(result);
});
}
performAjaxCall
返回$.when
使用的ajax promise对象。