Javascript ajax双重请求

标签 javascript jquery html ajax

我有一个 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/

相关文章:

javascript - 检查与 Cordova 的互联网连接是否无法正常工作

Javascript获取网页的最后修改

jquery - 点击后减少window.setInterval

css - 无法让页脚停留在页面底部

javascript - 使用 Watir Webdriver 和 phantomjs 下载文件

javascript - 了解 underscore.js 代码的结构

html - 如何在 html 中创建自动调整列,其中无论列数如何都不会出现水平滚动条

html - 防止图像重叠

javascript - 将窗口调整大小事件分别附加到每个元素

javascript - 我如何将偷看效果从悬停更改为滚动