簡體   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