我的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");
}
});
}
}
答案 0 :(得分:1)
由于每个循环都会触发对服务器的AJAX调用,这是否意味着为服务器端的每个调用创建了一个新线程?
这完全取决于服务器端使用的基础架构。很少有服务器会为每个请求创建一个全新的线程,但是很多服务器会从一个池中为每个请求分配一个线程,并在请求时将该线程返回到池中提供服务。
答案 1 :(得分:0)
每个AJAX调用都会创建一个新的XHR,无论是否在循环中调用它都无关紧要。如果“async:false”表示jquery将等待请求完成/失败。