如果完成了前5个AJAX函数,则执行下5个AJAX函数

如果完成了前5个AJAX函数,则执行下5个AJAX函数,ajax,Ajax,我有以下代码: <script type="text/javascript"> $('#send').click(function({ var foo = array(1,2,...,50); var max = 5; for(var i == 0; i < max; i++){ $.ajax({ url: '/ajax.php',

我有以下代码:

<script type="text/javascript">

    $('#send').click(function({
        var foo = array(1,2,...,50);

        var max = 5;

        for(var i == 0; i < max; i++){
            $.ajax({
                url: '/ajax.php',
                type: 'post',
                data: {
                    id: foo[i]
                }
                ......
        })

    }));


</script>

$(“#发送”)。单击(函数)({
var foo=数组(1,2,…,50);
var max=5;
对于(变量i==0;i
我想让脚本检查是否完成了五个ajax函数,接下来的5个ajax函数将执行


我需要你的帮助。我的英语不好,谢谢!

你可以试试这样的方法:

var foo = new Array(50);
var max = 5;
var pointer = 0;

var batchSuccesses = 0;
var batchFailures = 0;


function runNextIfBatchCompleted(){
    if(batchSuccesses+batchFailures == max){
      batchSuccesses = 0;
      batchFailures = 0;
      runPostBatch();
    }
}

function runPostBatch(){
  var currentPointer = pointer;

  for(var i = currentPointer; i < Math.min(max*((currentPointer/max)+1),foo.length); i++){
    $.post('/ajax.php',
       { 'id' : foo[i] }
    )
    .done(function(data){
      batchSuccesses++;
      runNextIfBatchCompleted();
    })
    .fail(function(data){
      batchFailures++;
      runNextIfBatchCompleted();
    })
   pointer++;
  }
}

runPostBatch();
var foo=新数组(50);
var max=5;
var指针=0;
var=0;
var=0;
函数runNextIfBatchCompleted(){
如果(BatchSuccessions+batchFailures==最大值){
成功率=0;
batchFailures=0;
runPostBatch();
}
}
函数runPostBatch(){
var currentPointer=指针;
对于(var i=currentPointer;i
这使用jQuery库提供的
jqXHR
接口,允许我们在完成一批5个任务时触发
done
/
fail

您可以在这里看到这一点:在控制台和网络选项卡中。(这使用
Get
而不是
Post
,但在其他方面是相同的)


您肯定可以提高这段代码的效率,但希望它能让您知道从哪里开始。

谢谢,我要试试这个!太棒了!您真是上帝!