我应该在无限循环中使用ajax吗?

时间:2018-08-23 03:33:26

标签: php ajax

我需要创建一个站点,每秒钟显示服务器的答案。 我应该使用while (true) { }还是应该使用其他东西?

2 个答案:

答案 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();