SetInterval长时间运行脚本错误

时间:2017-12-22 16:43:46

标签: javascript jquery

我有一个应用程序,我将从服务中获取数据,我需要显示分页数据。每页包含16条记录。基于此,将动态显示页面的数量。我使用jquery fadeout / fadein在8秒后显示每页淡出。显示最后一页后,我再次调用该服务并更新数据。我一直在使用SetInterval遍历每个页面。以下是页面显示的代码片段

if (deppages > 1) {
    $dels.slice(1).hide();
    clearInterval(depinterval);
    depinterval = setInterval(function () {
        $("#pmain .sptotpg").promise().done(function () {
            if (a == deppages - 1) {
                getData();
            }
        });

        $dels.eq(a).fadeOut(500, function () {

            if (a == deppages - 1)
                a = deppages;
            else
                a = (a + 1) % deppages;

            if (a > 0) {
                //$("#legend").show("fast");
                //$("#footermsg").css("bottom", "-76px");
                //$("#pmain").css("height", "");
            }
            else {

                if ($("#airlines").css("display") == "none")
                    $("#footermsg").css("bottom", "-46px");

            }

            $dels.eq(a).fadeIn(500, function () {                    
            });


        })
    }, 23000);
}

我面临的问题是,在应用程序运行几个小时之后,我遇到了长时间运行脚本错误。任何人都可以建议我哪里出错了?

修改

我已经以另一种方式实现了类似的功能,但同样也遇到了相同的错误。在生产环境中,页面全天保持打开状态,永不关闭。基本上我是一次构建所有页面并循环(淡入/淡出)它们,在最后一页中,我试图再次从服务中获取数据并构建页面

function fadeContent() {
   $("#flightsinfo .pg:hidden:first").fadeIn(500).delay(23000).queue(function (next) {
        if ($(this).attr("a") == $(last).attr("a")) {
            $('.flpg').html("");
            getData();
        }

        next();
    }).fadeOut(500, function () {

            $(this).appendTo($(this).parent());

            fadeContent();

            if (noofpages > 1 && flagcnt <= noofpages) {
                if ($(this).parent().find('.wrapper').length > 0 && noofpages > 1) {
                    $('.flpg').html("Now showing page " + (flagcnt) + " of " + noofpages);
                    flagcnt++;
                }
                else {
                    $('.flpg').html("");
                    flagcnt = 2;
                }
            }
            else {
                $('.flpg').html("");                    
            }

    });
}

这是我获取数据的方式

function getData() {
loadSettings();

$("#flightsinfo").html("");
$('.flpg').html("");

var refurl = new Date().getTime();

$.ajax({
    type: "GET",
    url: serviceurl,
    async: false,
    success: function (data) {

        buildContent(data, false);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        if (sessionStorage.getItem("cacheddata") != null) {
            var restoredata = new DOMParser().parseFromString(sessionStorage.getItem("cacheddata"), "text/xml");
            buildContent(restoredata, true);
        }
        else {
            $("#screen").empty();
            $("#screen").append(def);
        }
    }
});
}

0 个答案:

没有答案