我知道有很多问题,但我仍然无法找到一个正确的答案,使我的代码正常运行。
我有一个函数定义为调用ajax,由于安全问题我无法更改。这就是我称之为该功能的方式
var JsonIQDetails = JSON.stringify(input);//Some input
//pram 1:MethodUrl, 2:JsonObject, 3:ReturnType, 4:SuccessCallBackFunction
InvokeAjaxCall(Url, JsonIQDetails, "json", Success);
我有对象数组(超过500个)。由于JSON变得很长,所以我无法进行ajax调用。再次由于安全问题,我也无法更改配置文件。所以JSON长度不能增加。
我将数组划分为100个小块并调用方法
for (i = 0, j = mainObject.length; i < j; i += chunk) {
var newSubObject = mainObject.slice(i, i + chunk);
InvokeAjaxCall(Url, newSubObject, "json", Success);
function Success(data) {
if (!data) {
alert("Failed");
break;
}
}
}
它在没有完成for
循环并执行下一个代码的情况下移动。所以我想首先完成for
循环(可能是异步)
先谢谢.. !!!
答案 0 :(得分:0)
Ajax默认是异步的,所以你几乎需要在你的成功函数中调用你的ajax调用的下一部分。这是一个负责处理的递归循环。
var ajaxRecursive = function(i, j, c){
if(i < j){
var newSubObject = mainObject.slice(i, i + chunk);
InvokeAjaxCall(Url, newSubObject , "json", function(data){
//do stuff with data
ajaxRecursive(i+=chunk, j,chunk);
});
}
}
ajaxRecursive(0, mainObject.length, chunk);
假设ajaxRecursive中的其他变量是全局定义的。
更新说明