同时停止2个间隔+使它们增量

时间:2016-11-28 12:32:46

标签: javascript jquery ajax

今天我正在为我尝试一些复杂的脚本。

我要做的是在服务器关闭时更改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秒钟,但事实并非如此。

This is the parentTable with it's interval. ChildTable undefined is fine because the child Table isn't present now

The childTable is present. I know it drops a undefined, but It comes because I clean the interval first to prevent possible duplicates intervals ID When I stop the server, the first table (databases) waits 5 secons and it has to be incremental when X number of errors (from databases only, masterTable) are dropped. The second talbe (childTable) has to wait 5 seconds too, but it doesn't.

那么......我必须做什么?

  • 我知道addChildTableInterval有1000和rowclicked可能是问题,但我不知道如何更改它。

  • 我如何增加请求?

更新:我解决了问题

解决了2个区间的问题。说明?很容易。 如果你看看我的代码,你会发现我有一个名为“ConsoleDataTable”的类。

当我访问me.childTableInterval时,我是INSIDE Con​​soleDatatable,但这不是我的目的!我想成为addChildTable!所以我把呼叫改成了我的对象......问题解决了! :D

你必须检查你当前的范围是你的目标范围。在其他情况下,您将遇到与我相同的问题。

1 个答案:

答案 0 :(得分:0)

好的人,我用2个间隔解决了这个问题。这与我的范围有关。