我正在玩一点原始的 XmlHttpRequestObjects + Comet Long Polling。(通常,我会让 GWT 或其他框架为我处理这个问题,但我想了解更多相关信息。)
我写了以下代码:
function longPoll() {
var xhr = createXHR(); // Creates an XmlHttpRequestObject
xhr.open('GET', 'LongPollServlet', true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
...
}
if (xhr.status > 0) {
longPoll();
}
}
}
xhr.send(null);
}
...
<body onload="javascript:longPoll()">...
我将调用包装longPoll()
在一个 if 语句中,该语句检查status > 0
,因为我遇到了,当我离开页面时(通过浏览其他地方,或通过重新加载它),发送最后一个不必要的彗星调用。[在 Firefox 上,它甚至会在重新加载页面时导致严重的问题,出于某种我还不完全理解的原因。]
问题:检查是status
处理此问题的正确方法,还是有更好的解决方案?