继续加载AJAX请求

时间:2015-07-29 20:51:51

标签: ajax

我有一个AJAX请求,它从数据库中获取数据,然后使用收集的数据填充页面。我遇到的问题是,当前ajax请求是在每秒调用的setInterval中。

<span ng-non-bindable>{{1288323623006 | date:'medium'}}</span>

这是每秒获取数据,这是服务器上的一个巨大压力,因为它正在发出请求,然后我再次调用它,即使数据没有第一次通过。

有没有一种方法可以反复调用相同的AJAX请求,但只有在第一次完成数据提取并且不继续运行之后?

3 个答案:

答案 0 :(得分:2)

有更好的架构来完成这种类型的场景(评论中提到的websockets就是一个例子),但要严格按照你的要求行事,当然!将它包装在一个自称的函数中:

function getData(){
    $.ajax({
        method: "POST",
        url: "/PLM/FetchPageContent",
        dataType: "json",
        success: function (data) {
            console.log(data);
            getData();
        }
    });
}

答案 1 :(得分:0)

仅在完成后将setInterval替换为setTimeout

function fetchAjax() {
  $.ajax({
    method: "POST",
    url: "/PLM/FetchPageContent",
    dataType: "json",
    success: function (data) {
        console.log(data);
        setTimeout(fetchAjax, 1000);
    }
  });
};

答案 2 :(得分:0)

如果ajax调用已在进行中,则添加一个变量以进行distunguish。如果是,不要做任何事情。如果没有,请继续。

var isAjaxInProgress = false;
setInterval(function () {
    if (!isAjaxInProgress){
    isAjaxInProgress = true;
    $.ajax({
        method: "POST",
        url: "/PLM/FetchPageContent",
        dataType: "json",
        success: function (data) {
            console.log(data);
            isAjaxInProgress = false;
        }
    });
    }
}, 1000);
相关问题