Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用each()和ajax()完成()同步处理ajax_Jquery_Ajax - Fatal编程技术网

Jquery 使用each()和ajax()完成()同步处理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

我读过很多关于如何将done()与$.ajax()结合使用的文章。据我所知,ajax返回了一个承诺,因此应该在完成时执行done(),这似乎是在发生,但是在each()循环中,一旦到达第一个ajax函数,第二个循环将在第一个循环仍在处理时启动

以下是该问题的基本内容:

我期望的结果是:

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);
    }
  })
}