我有一个应用程序,我将从服务中获取数据,我需要显示分页数据。每页包含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);
}
}
});
}