我的脚本正在向页面 ( ) 发送一个 GET 请求,http://example.org/getlisting/
而该页面又以 JSON 对象进行响应。( {"success":true, "listingid":"123456"}
)
这是一个示例片段:
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 请求,那么响应就会被忽略或丢弃。
我在做什么错/误解?