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

Why this polling stops working after idling for some time?

本文关键字:空转 一段时间 停止工作 为什么      更新时间:2023-09-26

我使用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页面刷新时起作用。工作意味着打电话。Json更改后,将出现警报。但是,如果我打开页面,比如说30分钟,然后再回来,它就停止工作了。我必须刷新页面才能使它再次工作。

我还错过了什么?我做错了什么?会不会是缓存机制造成的?

非常感谢。

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

您可以通过这样做来破坏缓存:

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

根据您的后端设置,您可能需要调整它以接受