我正在遵循使用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有什么冲突?
谢谢。
答案 0 :(得分:3)
为什么它再次轮询,因为你在完整的回调中再次调用函数poll
(function poll(){
$.ajax({ url: $("comment").data("url"), success: function(data){
alert(data.comment);
}, dataType: "json", complete: poll, timeout: 8000 });
-----------------------------------------^ //here
})();
也不要将timeout
与setTimeout
混淆,这里超时意味着如果ajax调用在8秒内没有返回,则会触发错误回调