我有一个 AJAX jQuery 聊天应用程序,它通过询问新消息来工作,一开始它只询问 20 条最近的消息,然后它获取最新消息的计数,所以当它再次询问时,它知道什么最后一个消息 ID 是,服务器从那时起返回消息。
问题出在较慢的连接上,它花费的时间比它请求的速率要长,导致收到不止一条相同的消息,因为有不止一个请求在使用相同的旧消息 ID 运行。
我如何确保它一次只运行一个请求?
最佳答案
我假设您正在使用 setInterval
来执行您的重复请求。由于您提到的确切原因,这不是最佳做法:如果一个函数需要很长时间,则可能会在上一次迭代完成之前发生一个新函数。
最好在 post
调用的 complete
处理程序中使用 setTimeout
:
function doRequest() {
$.ajax({
url: 'someurl',
/* some other options */
complete: function(){
setTimeout(doRequest, 30000);
}
});
}
doRequest();
关于Javascript ajax双重请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4753064/