jQuery数组循环中的多个Ajax请求

时间:2018-08-29 14:10:21

标签: javascript jquery ajax

如何通过一个发出多个ajax请求,我有一个很大的数据数组,并且循环遍历该数组,所以在每个循环中我都需要向服务器发出ajax请求,但是我只想在最后一个请求完成后才发出请求< / p>

现在这是我的代码:

// This is loop for BigData

length = BigArray.length;

for (i = 0; i < length; i++) {
  token = BigArray[i][0];
  name = titleCase(BigArray[i][1]);
  ajaxRequest(token, name);
}

function ajaxRequest(token, title) {
  $.post(APP_URL + "/message/send", {
    "_token": Laraveltoken,
    title: title,
    token: token
  }, function(data, status) {
    //When Done start next request
  });
}

2 个答案:

答案 0 :(得分:0)

  

您可以使用 async.js 进行多个异步操作。

https://caolan.github.io/async/

示例:

async.parallel([
    function(callback) { ... },
    function(callback) { ... }
], function(err, results) {
    // optional callback
});

async.series([
    function(callback) { ... },
    function(callback) { ... }
]);

答案 1 :(得分:0)

我将通过递归函数解决您的问题。

步骤:

  1. 创建一个将接收一个参数的递归函数
  2. 如果数组长度大于0,则继续使用函数正文
  3. Shift数组(从数组中删除第一项并将其存储到变量中)
  4. 调用我们的函数并使用提供的参数执行AJAX调用,并传递我们的数组
  5. AJAX调用完成后,调用我们的递归函数并将其数组传递给它

代码:

function myRecursiveFunction(myArray){
   if(myArray.length == 0) return;

   //remove first item of an array then store it into variable item
   var item = myArray.shift(); 
   //call our method which will execute AJAX call to server
   ajaxRequest(item[0], titleCase(item[1]), myArray);
}

function ajaxRequest(token, title, myArray) {
  $.post(APP_URL + "/message/send", {
    "_token": Laraveltoken,
    title: title,
    token: token
  }, function(data, status) {
    //When Done start next request
  }).always(function(){
    //call our recursive function
    myRecursiveFunction(myArray);
   });;
}