【发布时间】:2016-07-25 13:36:10
【问题描述】:
我正在尝试让网络工作者每秒左右轮询同一台机器上的网络服务器接口。我读过的大多数文章都说要避免使用 setInterval 并改用 setTimeout,但我还没有找到使用 AJAX 而不是 Jquery 的示例。
我目前的代码如下:
(function poll() {
setTimeout(function() {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if (xhr.status === 200) {
responseObject = JSON.parse(xhr.responseText);
var newContent = '';
newContent += responseObject.cmd;
console.log(newContent);
}
}
xhr.open('GET', 'http://localhost:8194/screen_update/1000', true);
xhr.send(null);
setTimeout(poll, 1000);
}, 1000);
})();
首选的输出是每秒轮询服务器,理论上这应该足以让响应通过。我一次只需要一个请求,所以如果我最终收到一个请求超过一秒钟的请求,它只会转储请求(而不是排队)并发出一个新请求。
上面的代码轮询正常,但没有完成 2 秒,所以我显然把我的 setTimeout 搞混了。我在哪里更正此代码?
【问题讨论】:
-
把超时放在onoad中
标签: javascript ajax settimeout web-worker polling