javascript - 停止JS中的长轮询功能

标签 javascript ajax jquery long-polling

我有一个页面,我在其中实现了一个长轮询功能来检查记录的时间戳,因此如果数据已被编辑,它将更新。

<script type="text/javascript">
var poll_url = 'http://mysite.com/poll/;
var my_ts = <?php $_SESSION['template_timestamp']; ?>;
(function poll(){
    $.ajax({ 
        url: poll_url,
        type: 'post',
        success: function(data){
            if ((data.ts > 0) {
                // check if expired
                if (data.ts > my_ts) {
                    // it has expired, so reload the page
                    $("#dialog-message").html('Record has been edited.');
                    // show popup
                    $("#dialog-message").dialog({
                        modal: true,
                        buttons: {
                            Reload: function() {
                                $(this).dialog("close");
                                $('#pleaseWait').show();
                                window.location.href = '/records/overview';
                            }
                        }
                    });
                }
            } else {
                // is still null
                console.log('error');
            }
        }, 
        dataType: "json", 
        complete: poll, timeout: 30000 
    });
})();
</script>

我遇到的问题是还有另一个调用 JS ajax 调用的操作,调用时我想强制停止长轮询函数。
有办法做到这一点吗?

最佳答案

以下 SO 问题可能会提供答案... Abort Ajax requests using jQuery

将其应用于您的代码片段,您可能会得到类似于...

<script type="text/javascript">
var poll_url = 'http://mysite.com/poll/';
var my_ts = <?php $_SESSION['template_timestamp']; ?>;
var poll_xhr;

(function poll(){
    poll_xhr = $.ajax({ 
        url: poll_url,
        type: 'post',
        success: function(data){
            // Code removed
        }, 
        dataType: "json", 
        complete: poll, 
        timeout: 30000 
    });
})();

// To kill the AJAX request, put this where it makes sense
poll_xhr.abort();
</script>

关于javascript - 停止JS中的长轮询功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13008854/

相关文章:

javascript - 正则表达式不适用于 Firefox,但适用于 Chrome

javascript - 使用 AJAX 初始化 Vue 数据

javascript - 在 html 页面中滑动下一个和上一个按钮

javascript - 适用于移动设备的 SharePoint ECMAScript

javascript - nodejs 中类似 c 的互斥量

javascript - AJAX 请求正文为空(无 jQuery)

javascript - 如何修复表格的标题

javascript - AJAX 发送带有函数的对象会在函数中引发错误

javascript - 在 AngularJS 中对 Google 图表使用 Restful api 服务输入(json 数据)

c# - 除了我自己的客户端代码之外,如何防止访问 URL?