作为对jfriend00 的回答的补充,我建议寻找另一种解决方案,而不是使用setInterval
来做你想做的事。
setInterval
由于某种原因被认为是有害的:
setInterval
忽略错误
setInterval
不关心网络延迟
setInterval
不保证执行
您可以在那里查看更多信息http://zetafleet.com/blog/why-i-consider-setinterval-harmful。
如果您真的别无选择,只能使用这种技术检查服务器更新,那么像下面这样的代码会更有效
var timer = null,
delay = 1000;
function checkAndDisplayNewResults() {
// do some work
// when the work is finished, set a timer to call again the function
timer = setTimeout( checkAndDisplayNewResults, delay );
// the term "when the work is finished" means in this case, when your AJAX request is finished
// and not simply at the end of the checkAndDisplayNewResults function
}
// call the function immediately
checkAndDisplayNewResults();
此外,正如Joseph 所说,请注意此技术可能给您的应用程序带来的带宽开销。
在任何情况下,正如其他人所指出的,还有其他更好的方法可以做到这一点:WebSocket、服务器发送事件、HTTP 轮询、AJAX 推送、长加载 iframe 等......你可以查看这篇关于 Web 的文章的介绍套接字http://www.html5rocks.com/en/tutorials/websockets/basics/并阅读更多内容以了解如何使用 Web 套接字