我有一个非常独特的设置,我想它会对这个问题产生一些影响(我以前从未见过)。
我正在编写一个 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();
在这种情况下,两个请求都失败了;我没有收到任何一方的回复。
我还在后台脚本中尝试过这段代码,在自动生成的后台页面上运行。这也失败了(都不成功)。
我猜这在某种程度上与我在这里写的非常小众的案例有关,但在这一点上,我真的站在如何排除故障和继续前进的立场上。有什么想法可以进一步探索这个问题吗?
谢谢!凯文