jquery parallel ajax一个接一个地调用循环

时间:2018-02-04 14:59:51

标签: javascript jquery ajax parallel-processing

当我执行下面的脚本时,它会创建所有1000个ajax请求,当事务达到约3k时,它从未完成。所以我试图制作基于平板的并行ajax请求,

如何一个接一个地创建并行ajax请求?我想在完成前100个ajax响应之后创建前100个parallal ajax请求,然后创建第二个位置200个并行ajax请求。

这是我的数组

var tasks=[{100 urls},{200 urls},{400 urls},{600 urls},{800 urls},{1000 urls}];
$.each(tasks,function(index,item){
  $.each(item.urls,function(key,val){
    $.aja(val.url,function(response){
    // .... do some work
    });
  });
});

1 个答案:

答案 0 :(得分:-1)

每个ajax调用都是异步运行的。因此,您可以等待每个任务的异步ajax调用完成并运行下一个任务,依此类推。

下面的脚本使用Promise模式(jquery.when)来等待每个任务的异步ajax调用。

var tasks=[{100 urls},{200 urls},{400 urls},{600 urls},{800 urls},{1000 urls}];

function runTasks(index) {
  var item = tasks[index];
  return $.when($.map(item.urls, function(key, val) {
    return $.ajax(val.url);
  })).then(function() {
    if (tasks[index + 1]) {
      return runTask(index + 1);
    } else {
      return true;
    }
  });
}

runTasks(0).then(function() {
  // execute when all tasks done
});