Javascript函数阻止已执行的执行

时间:2019-05-30 07:57:32

标签: javascript ajax

我有一个功能,该功能是从第三方获取记录,并且每10秒钟执行一次此功能。

问题是因为此函数在很短的时间后执行,所以当我通过firefox调试时,它显示了很长的ajax队列。我在考虑为什么不添加一条语句,该语句可以向下一步发出有关ajax执行的信号。因为我正在执行相同的功能,并且哪个作业是相同的,所以如果先前的作业仍在执行相同的作业,则没有必要针对同一作业执行另一个作业。我正在尝试

function someThingPrecessing(){
    if(sessionStorage.do == true){
        $.ajax(function(){
            continue...
        });
     }

    sessionStorage.do = true;
    sessionStorage.do = false;
}

setInterval(someThingPrecessing,10000);

但是上面的一个没有用,有人可以指导我该怎么做。我要感谢。

1 个答案:

答案 0 :(得分:0)

您应该在调用下一个请求之前检查ajax请求是否已完成。下面是一个示例:

var ajax_ongoing=false;
function someThingPrecessing(){
    if(!ajax_ongoing){
    ajax_ongoing=true;
        $.ajax(function(){
            success : function(data) {
                    ajax_ongoing=false;
                },
                error : function(data, textStatus, errorThrown) {
                    ajax_ongoing=false;
                }
        });
     }
  }

setInterval(someThingPrecessing,10000);