当它失败/网络脱机时,重新调用长轮询AJAX请求

时间:2014-05-20 08:38:53

标签: javascript ajax

我在PHP / Node.js应用程序中实现了一个成功的长轮询。我已经创建了一个例程,用于在计算机唤醒后(在睡眠模式之后)启动长轮询AJAX请求,如下所示。


问题是AJAX请求由于互联网连接而失败,因为它需要一些时间来准备,这导致AJAX请求失败。我需要再次回忆这个请求,直到互联网恢复,但我找不到任何方式来知道上一个请求是否未能发送新请求并跟踪其状态。

我没有使用Jquery而且我不想使用它。

如果他们在超时秒内没有到达服务器,我可以为直接AJAX调用创建超时,但是长轮询请求状态在服务器上等待40秒,我需要检测它是否在2之后失败发送的秒数。

有没有与xmlHTTP对象有关的解决方案?

非常感谢你的帮助。感谢。

var program ={
    init: function(){
        this.isSleep = function(lastTime){

            var lastTime = lastTime;

            clearTimeout(program.tt)
            program.tt = setTimeout(function(){

                var currentTime = new Date().getTime();
                if(currentTime > (lastTime + 2000*2) ){

                    // request fails if the internet connection was not ready  
                    ajax.call({ // long polling request......});
                }

                program.isSleep(new Date().getTime());


            }, 2000);
        };

        this.isSleep(new Date().getTime());
    }
}

1 个答案:

答案 0 :(得分:0)

将变量设置为true,然后调用计时器2秒钟。如果ajax返回将该变量变为false,如果计时器被触发,那么检查你的变量并做你需要做的任何事情。