我的脚本发送一个GET请求一个页面(http://example.org/getlisting/
)和页面,反过来,响应背部采用了JSON对象。 ({"success":true, "listingid":"123456"}
)没有收到异步AJAX请求发送时快速
下面是一个例子片断:
var listingAjax = new XMLHttpRequest();
listingAjax.addEventListener("load", listingCallback, false);
function listingCallback(event) {
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
}
listingAjax.open("GET", "http://example.org/getlisting/", true);
listingAjax.send();
够简单。该剧本也完美无缺!产生的问题是,当我想这样做:
var listingAjax = new XMLHttpRequest();
listingAjax.addEventListener("load", listingCallback, false);
function listingCallback(event) {
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
}
window.setInterval(function() {
listingAjax.open("GET", "http://example.org/getlisting/", true);
listingAjax.send();
}, 250);
我想象应该发生的事情是我的脚本将创建用于获取发送到服务器,然后服务器响应每一个GET请求源源不断。然后,我的脚本将收到服务器的响应并将它们发送给回调。
更准确地说,我让这个脚本运行5秒,然后我的脚本在那个时候发送了20个GET请求到服务器。我希望我的回调(listingCallback
)也会被调用20次。
问题是,事实并非如此。几乎看起来,如果我在收到服务器响应之前发出两个GET请求,那么响应将被忽略或丢弃。
我在做什么错误/误解?
你在哪些浏览器中看到这种行为?我不确定它为什么会发生,但我想知道它是否是浏览器特定的。 – MJD
这是谷歌浏览器。因为我计划在将来(明年有一段时间)将此脚本转换为NodeJS应用程序,因此我计划将其作为特定于此的脚本) – NessDan