我需要创建一个站点,每秒钟显示服务器的答案。
我应该使用while (true) { }
还是应该使用其他东西?
答案 0 :(得分:0)
为避免重复的ajax请求(它们是异步的,它们可能花费比预期间隔更长的时间),一种更好的方法是在ajax查询的回调期间再次调用您的请求。例如在JQuery
function showMyData(){
$.get( "app/data.html", function( data ) {
// set your content
$( "#container" ).html( data );
// run again after 1 sec.
window.setTimeout( showMyData, 1000);
}
);
如果需要更精确的间隔,则需要计算ajax调用和响应之间的时间。有时,可能需要一秒钟以上的时间。 如果yopu不这样做,您可能会在某个时间收到很多ajax呼叫等待响应。
答案 1 :(得分:0)
一个简短的答案:不,您不应该在无限循环或普通循环中使用AJAX
。
说明:
请注意AJAX
中的'A':代表Asynchronous
,表示在后台运行的任务可能会花费一些时间。因此,在循环(无限或有限)中使用AJAX
时,结果可能不是您想要的那样快,因为循环中运行的Asynchronous
任务非常快。假设您执行了一个循环,在其中执行了一些AJAX
,该循环只打印了该循环的计数器,比方说,从1到4,您认为得到的结果是:1、2、3、4,但是会得到如下结果:1,3,4,2
因此,要保留所需结果的顺序,可以使用一个函数,将其命名为infiniteAJAX,例如,在其中进行AJAX
调用,并在success
处理程序中调用infiniteAJAX。< / p>
function infiniteAJAX() {
$.ajax({
// ...
success: function(response) {
// Manipulate the response
// call infiniteAJAX()
infiniteAJAX()
}
});
}
// call infiniteAJAX()
infiniteAJAX();