繁体   English   中英

jquery并行ajax调用一个接一个循环

[英]jquery parallel ajax calls loop one after another

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

如何创建一个接一个的并行 ajax 请求? 我想在完成第一个 100 个 ajax 响应后创建前 100 个并行 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
    });
  });
});

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM