根据我为此特定项目提供的规范,我同时启动了几十个AJAX请求,并在完成后显示结果以尽快给出响应。
目前我将所有项目显示为“正在加载...”,然后在请求完成后逐渐更换。
由于浏览器的限制,在任何给定时间内只有大约五个实际加载,其他的被阻止,直到早先的已经完成。
我想知道是否有任何方法可以找出该块何时结束并且实际发送了请求。
使用onreadystatechange
检测除readyState
以外的4
值的初步测试并不乐观 - 在完成之前不会触发任何事件,此时我会获得2
,{ {1}}和3
立即连续(请注意,对于测试,AJAX响应会被4
人工延迟一段随机时间)
有什么想法吗?或者是我唯一真正选择手动实现阻止部分?
答案 0 :(得分:2)
您可以实际获得的最佳近似值是观察readyState" 1" ..表示已建立服务器连接。这将为您提供非常接近的估计,以确定连接何时实际生效。
我已经在http://jsfiddle.net/r0gknr3w/被黑了。只需观看JS控制台,您就会看到" 1"登录。你说你从未见过readyState 1 ......但它确实存在。
var xhr = $.ajax({
url: "/echo/html",
xhr: function () {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
console.log(xhr.readyState);
}
return xhr;
}
});
答案 1 :(得分:-3)
你能用jquery函数来调用ajax请求。最好发送多个请求并行并尽快得到响应..