gpt4 book ai didi

javascript - Ajax 循环调用

转载 作者:行者123 更新时间:2023-11-28 07:18:24 25 4
gpt4 key购买 nike

我知道有很多与此相关的问题,但我仍然无法找到使我的代码正常运行的正确答案。

我定义了一个函数来调用 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 循环(可能是异步的)

提前致谢..!!!

最佳答案

Ajax 默认情况下是异步的,因此您非常需要在 success 函数中调用 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中的其他变量是全局定义的。

更新说明:

  • 您可以删除“成功”函数并匿名创建它。

关于javascript - Ajax 循环调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30572079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com