如果尚未收到先前的AJAX响应,则取消AJAX请求

时间:2017-02-21 05:20:48

标签: javascript jquery ajax

我每隔20分钟拨打一次AJAX电话并更新一些数据。现在,有时当我拨打电话时,到下一次呼叫发生时,它仍然没有收到上次呼叫的数据,从而堆叠两个呼叫。这种情况不断发生,服务器在某些情况下会被窒息。

我想要的是取消当前呼叫的响应尚未收到的那一分钟的AJAX呼叫。

这是我的代码:

setInterval(function(){
let now = new Date();
if(now.getSeconds() === 20){
    $.ajax({
        url: url,
        headers: { 'x-cyclops-ajax': 'yes' },
        method: 'POST',
        dataType: 'json',
        success: function(data) {
            var chart = $('#container').highcharts();
            var keys = Object.keys(data["histData"]);
            $( "#main-div" ).empty();
            for( var i=0; i< keys.length; i++) {
                chart.series[i].setData(data["histData"][keys[i]]["histFailure"], true);
                $('#main-div').append( '<div class="homepage-availability-inner-div"><h1 class="homepage-availability-text"> ' + keys[i] + ': <span class="dashboard-success">' + data["availData"][keys[i]] + ' </span> </h1></div>');
            }
            chart.xAxis[0].setCategories(data["histKeys"]);
            console.log("Data:" + JSON.stringify(data["availData"]));
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log("Did not hit the AJAX call");
        }
    });
}
}, 1000);

感谢任何帮助。

0 个答案:

没有答案
相关问题