多个Ajax调用在一个页面中调用多个超时

本文关键字:调用 超时 一个 多个 Ajax | 更新日期: 2023-09-27 18:24:33

汇总:我必须使用C#从一个服务(托管在多台服务器上)中获取多个数据,并最终使用ajax调用在一个页面上向用户显示这些数据。考虑一下,最终的显示格式包含由Jquery创建并由CSS样式化的图表和进度。

某些代码:

// Once Called Here and Timer Will Go On
UpdateDataA();
function UpdateDataA() {
    $.ajax({
        type: "POST",
        async: true,
        url: "Default.aspx/GetData",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (r) {                               
            var $s = $(".second");
            $s.val(r.d[0]).trigger("change");
            updateProgressA(r.d[1]);
            updateProgressB(r.d[2]);
            updateNetworkData(bytesToSize(r.d[5], 2), bytesToSize(r.d[6], 2));
        },
        error: function (msg) {
            alert(msg.error);
        }
    });
    setTimeout(function () { UpdateDataA(); }, 1000);//Timer
}

考虑更多这样的电话。

问题:计时器间隔不会按照设置的间隔更新。一个元素更新正确,然后等待其他元素完成,而它不应该完成。但我需要不断更新。这样,如果一个呼叫崩溃,其他呼叫就会死亡。

问题:我能做什么或我有什么错?

注意:我是jquery和ajax的新手。

感谢您之前的

多个Ajax调用在一个页面中调用多个超时

忽略我对间隔的评论。我认为你需要跟踪你的计时器:

timerA = setTimeout(function () { UpdateDataA(); }, 1000);

并清除更新功能中的,直到任务完成

var timerA;
// Once Called Here and Timer Will Go On
UpdateDataA();
function UpdateDataA() {
    clearTimeout(timerA);
    $.ajax({
        type: "POST",
        async: true,
        url: "Default.aspx/GetData",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (r) {                               
            var $s = $(".second");
            $s.val(r.d[0]).trigger("change");
            updateProgressA(r.d[1]);
            updateProgressB(r.d[2]);
            updateNetworkData(bytesToSize(r.d[5], 2), bytesToSize(r.d[6], 2));
            timerA = setTimeout(function () { UpdateDataA(); }, 1000);//Restart time after task is complete
        },
        error: function (msg) {
            alert(msg.error);
        }
    });

}