Ajax在循环内调用

时间:2017-04-18 07:35:42

标签: javascript jquery ajax

我的jQuery代码中有一个循环。在循环内部有一个AJAX调用。因为对于每个循环,对服务器的AJAX调用被触发,是否意味着为服务器端的每个调用创建了一个新线程?所有的电话都有新线程吗?这是我的jQuery代码供您参考:

function Run() {
  var i = 0;
  var r = '${result}'
  var par = '${paramy}'
  var str = r.replace(/\r?\n|\r/g, " ");
  var resjson = JSON.parse(str);
  var parjson = JSON.parse(par);

  //loop to send ajax req multiple times. 
  for (var i = 0; i < resjson.length; i++) {
    var k = i + 1;
    var m = encodeURIComponent(JSON.stringify(resjson[i]));
    var py = encodeURIComponent(JSON.stringify(parjson));
    var pass = '';

    $.ajax({
      type: 'post', // it's easier to read GET request parameters
      url: 'servlet1',
      async: true,
      data: { 
        r: m,
        p:py
      },
      success: function(data) {
        console.log("pass"`enter code here`)
      },
      error: function(data) {
        console.log("fail"); 
      }
    });
  }
}

2 个答案:

答案 0 :(得分:1)

  

由于每个循环都会触发对服务器的AJAX调用,这是否意味着为服务器端的每个调用创建了一个新线程?

这完全取决于服务器端使用的基础架构。很少有服务器会为每个请求创建一个全新的线程,但是很多服务器会从一个池中为每个请求分配一个线程,并在请求时将该线程返回到池中提供服务。

答案 1 :(得分:0)

每个AJAX调用都会创建一个新的XHR,无论是否在循环中调用它都无关紧要。如果“async:false”表示jquery将等待请求完成/失败。