在我的代码中,我需要使用ajax每5秒后轮询一个url.URL返回json响应.下面是我在$(document).ready中编写的代码.但是,setTimeout()函数不起作用.收到响应后立即调用startPoll()函数.我希望在收到响应后暂停5秒钟,然后再次调用startPoll函数.有任何解决这个问题的方法吗 ?
$(document).ready(function(){
var startPoll = function() {
$.post('<url>', {},onPollRequestComplete, 'json');
}
var onPollRequestComplete = function(response) {
responseObject = eval(response);
if(responseObject.success) {
//Do something here
}
setTimeout(startPoll(),5000); /*Make next polling request after 5 seconds*/
}
startPoll();
});
Run Code Online (Sandbox Code Playgroud)
谢谢
这是你的问题:
setTimeout(startPoll(),5000);
Run Code Online (Sandbox Code Playgroud)
你startPoll马上打电话,而不是5秒钟后.相反,你应该传入函数引用,如下所示:
setTimeout(startPoll,5000);
Run Code Online (Sandbox Code Playgroud)
如果您希望轮询每5秒触发一次,即使以前的民意调查不起作用(遇到服务器错误),也应该使用setInterval.如果您希望能够在出现错误时停止轮询,那么您现在拥有的代码非常棒.