在使用turbolink的Rails中使用jQuery进行长轮询

时间:2013-03-14 04:11:22

标签: jquery ruby-on-rails polling turbolinks

我正在遵循使用jQuery AJAX请求here创建长轮询的指令。 以下是我的代码:

:javascript
  (function poll(){
      $.ajax({ url: $("comment").data("url"), success: function(data){
          alert(data.comment);
      }, dataType: "json", complete: poll, timeout: 8000 });
  })();

但是这段代码不是暂停8秒,而是持续轮询。我做错了什么,或者这与我在Rails 3.2中使用的turbolink gem有什么冲突?

谢谢。

1 个答案:

答案 0 :(得分:3)

为什么它再次轮询,因为你在完整的回调中再次调用函数poll

    (function poll(){
          $.ajax({ url: $("comment").data("url"), success: function(data){
              alert(data.comment);
          }, dataType: "json", complete: poll, timeout: 8000 });
-----------------------------------------^ //here
      })();

也不要将timeoutsetTimeout混淆,这里超时意味着如果ajax调用在8秒内没有返回,则会触发错误回调

LIVE DEMO