3

我正在按照说明在此处使用 jQuery AJAX 请求创建长轮询。下面是我的代码:

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

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

谢谢你。

4

1 回答 1

2

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

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

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

现场演示

于 2013-03-14T04:23:38.993 回答