我有一个非常独特的设置,我想这对这个问题有一些影响(我以前从未见过)。
我正在编写Google Chrome扩展程序,我依靠Node.js作为我的后端。
当我运行多个Ajax请求时,Node.js需要很长时间才能响应(例如,2.5秒),一些Ajax请求将永远不会收到响应并抛出错误。
我在我的Node.js服务器中设置了一个测试函数,它将在等待2500毫秒后响应JSON对象。我已经确认这项工作只需一个请求。
然后,我尝试在扩展中嵌入jQuery并尝试两个请求:
(function(){
$.ajax({
url : url,
data : params,
type : "POST",
success : function(data){
alert('success1');
},
error : function(xmlhttprequest, textstatus, message) {
alert('error');
}
});
})();
(function(){
$.ajax({
url : url,
data : params,
type : "POST",
success : function(data){
alert('success2');
},
error : function(xmlhttprequest, textstatus, message) {
alert('error');
}
});
})();
在这种情况下,仅调用第二个警报。第一个最终会导致错误(超时)。
我也试过没有jQuery,就像这样:
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.onreadystatechange = function() {
alert('response1');
}
xhr.send();
var xhr2 = new XMLHttpRequest();
xhr2.open("POST", url, true);
xhr2.onreadystatechange = function() {
alert('response2');
}
xhr2.send();
在这种情况下,两个请求都失败了;我没有收到任何一个回复。
我还在后台脚本中尝试了这段代码,在自动生成的背景页面上运行。这也失败了(两次都没有成功)。
我猜这在某种程度上与我在这里写的非常小的案例有关,但在这一点上,我真正站在如何排除故障和向前发展的立场。有没有进一步探讨这个问题的想法?
谢谢! 凯文