为什么这个轮询在空转一段时间后停止工作?

时间:2014-03-25 01:56:25

标签: javascript angularjs

我正在使用AngularJS通过HTTP POST不断轮询新数据。收到新数据时将发送警报。控制器内部的代码看起来像这样;

    var poll = function() {
        $http.get('phones.json').success(
            function(data)
            {
                new_val = data.val;
                if ( (new_val!== old_val) )
                {
                    $window.alert("AlertEvent");                        
                }

                old_data = new_val;
                $timeout(poll, 500);
            }
        );
    };
    poll();   

此代码在刷新html页面时有效。工作意味着当phones.json被更改时,将出现警报。但是,如果我离开页面,比如30分钟,然后再回来,它就会停止工作。我必须刷新页面才能让它再次运行。

我还错过了什么?我做错了什么?可能是由于一些缓存机制?

非常感谢。

编辑:我找到了原因。这确实是由于浏览器从缓存中读取。我可以使用Chrome开发者工具看到这一点。如何仅为此html页面禁用此缓存?

1 个答案:

答案 0 :(得分:2)

您可以通过执行以下操作来破坏缓存:

 $http.get('phones.json?v=' + Date.now())

根据后端的设置方式,您可能需要对其进行调整才能接受。