今天我正在为我尝试一些复杂的脚本。
我要做的是在服务器关闭时更改ajax请求信息的间隔或返回任何类型的错误。这是最简单的部分,我已经拥有它了:
request.fail(function(data) {
if(me.parentInterval) {
clearInterval(me.parentInterval);
me.startAutoRefresh(5000);
}
});
ConsoleDataTable.prototype.startAutoRefresh = function(time) {
var me = this;
if (time == null && time == undefined)
time = 1000;
me.parentInterval = setInterval(function() {
if (me.live) {
me.getData();
}
}.bind(me), time);
return me.parentInterval;
};
函数startAutoRefresh设置一个归属于Table的parentInterval。该表每秒重新加载它的信息,但是如果服务器关闭或其他什么,则下一个请求必须等待5秒。
我现在要做的是:
如果请求延迟超过5次(或服务器返回错误5次),则下一个me.startAutoRefresh必须是增量的(2次或5次,无所谓)。我如何从服务器获取故障并知道它失败的次数?我尝试使用变量count ++,每次我输入请求增量,但它不起作用。
我有一个“childTable”,需要重新加载它的信息。问题是当该表请求失败时,它不会改变他的间隔。在这里你有它的代码。
ConsoleDataTable.prototype.addChildTable = function(params) {
request.done(function(data) {
me.childTableInterval = setInterval(function(rowClicked) {
//Some code not relevant now//
if (me.live && active) {
tabTable.getData();
}
}, 1000, rowClicked);
});
request.fail(function(data){
clearInterval(me.childTableInterval);
me.startAutoRefresh(5000);
})
1 - 这是具有间隔的parentTable。 ChildTable undefined很好,因为现在没有子Table。
2- childTable存在。我知道它会丢弃一个未定义的,但它是因为我首先清理间隔以防止可能的重复间隔ID。
3-当我停止服务器时,第一个表(数据库)等待5个secons,当X个错误数(仅来自数据库,masterTable)被删除时,它必须是增量的。第二个talbe(childTable)也必须等待5秒钟,但事实并非如此。
我知道addChildTableInterval有1000和rowclicked可能是问题,但我不知道如何更改它。
我如何增加请求?
解决了2个区间的问题。说明?很容易。 如果你看看我的代码,你会发现我有一个名为“ConsoleDataTable”的类。
当我访问me.childTableInterval时,我是INSIDE ConsoleDatatable,但这不是我的目的!我想成为addChildTable!所以我把呼叫改成了我的对象......问题解决了! :D
你必须检查你当前的范围是你的目标范围。在其他情况下,您将遇到与我相同的问题。
答案 0 :(得分:0)
好的人,我用2个间隔解决了这个问题。这与我的范围有关。