在内循环的最后一次迭代中,每个循环有两个嵌套,我想调用一个包含 ajax 调用的 jquery 函数。只有从这个 ajax 调用获得结果后,才会发生每个外部的下一次迭代。有什么办法可以同步这些循环。
$.ajax({
type: "POST",
contentType: 'application/json;charset=utf-8',
dataType:'json',
url: 'getCall1',
data: JSON.stringify(send_data),
success: function(json)
{
$.each(json,function(i,item){
$.ajax({
type: "POST",
contentType: 'application/json;charset=utf-8',
dataType:'json',
url: 'getcall2',
data: JSON.stringify(send_data),
success: function(json)
{
$.each(json,function(i,item){
//For last iteration of this loop i want to call a function contain another ajax call. After completion of this call i want to continue with next iteration of outer loop
callFun();
});
}
});
});
}
});
function callFun(){
$.ajax({
type: "POST",
contentType: 'application/json;charset=utf-8',
dataType:'json',
url: 'getcall3',
data: JSON.stringify(send_data),
success: function(json)
{
}
});
}
最佳答案
您可以使用回调函数来处理它:
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
url: "getCall1",
data: JSON.stringify(send_data),
success: function(json)
{
var keys = Object.keys(json);
if(keys.length)
{
func1(0, keys, json);
}
}
});
function func1(index, keys, json1)
{
//you can get values from json1 using:
var val = json1[keys[index]];
//and use val
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
url: "getcall2",
data: JSON.stringify(send_data),
success: function(json2)
{
var keys2 = Object.keys(json2),
i;
if(keys2.length)
{
for(i = 0; i < keys2.length; i++)
{
//do as you wish
if(i === (keys2.length - 1))
{
callFun(
function callBack()
{
if(index < keys.length)
{
func1(++index, keys, json1);
}
}
);
}
}
}
}
});
}
function callFun(callbackFunc)
{
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
url: "getcall3",
data: JSON.stringify(send_data),
success: function(json)
{
callbackFunc();
}
});
}
祝你好运
关于jquery - 如何同步两个嵌套的jquery foreach循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34266147/