Javascript的setInterval落后于浏览器

时间:2017-04-01 11:21:35

标签: javascript jquery

我正在进行实时聊天。我已经使用setInterval每0.5秒实时显示所有消息。但是我注意到setInterval冻结并且有时会崩溃浏览器。我听说setTimeout是最好的替代方式吗?

  setInterval(function(){
        $.ajax({
            url: "display_msg.php",
            method: "POST",
            data: {conn:conn},
            success: function(data) {
                $('#chatarea').html(data);
            }
        });
    },500);

2 个答案:

答案 0 :(得分:1)

事情是setInterval将每x毫秒调用一次函数,并且,当您提交请求时,服务器需要一些时间来响应,可能会发生多个请求并行执行,从而导致一些麻烦给你的应用程序。

使用setTimeout,您只能在完成上一个请求后提交新请求。这会好得多。别忘了写一些代码来处理超时问题。

祝你好运!

答案 1 :(得分:1)

最好使用setTimeout,它会在再次请求数据之前等待上一个请求解决。

(function pollMessages() {
  $.ajax({
    url: "display_msg.php",
    method: "POST",
    data: {
      conn: conn
    },
    success: function(data) {
      $('#chatarea').html(data);
      setTimeout(pollMessages, 500)
    }
  });
})()