Jquery 使用each()和ajax()完成()同步处理ajax
我读过很多关于如何将done()与$.ajax()结合使用的文章。据我所知,ajax返回了一个承诺,因此应该在完成时执行done(),这似乎是在发生,但是在each()循环中,一旦到达第一个ajax函数,第二个循环将在第一个循环仍在处理时启动 以下是该问题的基本内容: 我期望的结果是:Jquery 使用each()和ajax()完成()同步处理ajax,jquery,ajax,Jquery,Ajax,我读过很多关于如何将done()与$.ajax()结合使用的文章。据我所知,ajax返回了一个承诺,因此应该在完成时执行done(),这似乎是在发生,但是在each()循环中,一旦到达第一个ajax函数,第二个循环将在第一个循环仍在处理时启动 以下是该问题的基本内容: 我期望的结果是: 1-1 2-1 1-2 2-2 我尝试过将请求推送到数组的选项,但这意味着更多嵌套的each()ajax()循环会出现同样的问题吗 我需要按顺序处理它们的原因是循环中的某些实例需要用户输入 我可以使用async
1-1
2-1
1-2
2-2
我尝试过将请求推送到数组的选项,但这意味着更多嵌套的each()ajax()循环会出现同样的问题吗
我需要按顺序处理它们的原因是循环中的某些实例需要用户输入
我可以使用
async:false
强制获得所需的结果。但出于显而易见的原因,我想避免这样做。此外,这还会对脚本产生额外影响,因此我无法针对并更新一条跟踪消息,告知用户流程在哪里。我认为循环不可能。。。。尝试使用一个函数,一旦ajax完成,它将调用self
每个阵列(阵列)
函数每个数组(数组){
$i++;
console.log('1-'+$i);
完成(函数(){
console.log('2-'+$i);
如果($i)实际上是一个暂停代码直到您再次调用的函数如果您想强制执行排序,那么您不能一次触发所有异步请求。@Phylogenesis-我不想一次触发所有请求,这就是为什么我要使用done()在收到第一个请求的结果后立即启动下一个请求。您有什么建议吗?非常简单!谢谢!
function eachArray(array){
$i++;
console.log('1-'+$i);
ajax.done(function() {
console.log('2-'+$i);
if($i<array.length){
eachArray(array);
}
})
}