Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当每10秒调用一个函数时,Javascript页面会在几个小时后变得滞后_Javascript_Angularjs_Performance_Scope_Timeout - Fatal编程技术网

当每10秒调用一个函数时,Javascript页面会在几个小时后变得滞后

当每10秒调用一个函数时,Javascript页面会在几个小时后变得滞后,javascript,angularjs,performance,scope,timeout,Javascript,Angularjs,Performance,Scope,Timeout,我通过每10秒调用一个函数刷新javascript页面中的数据,该函数从我的服务器请求最新的数据 这是每10秒调用一次的函数: function loadEvents() { //Angular $resource factory EventsService.getEvents({}, function(response) { var events = response.events; var now = new Date().getTim

我通过每10秒调用一个函数刷新javascript页面中的数据,该函数从我的服务器请求最新的数据

这是每10秒调用一次的函数:

function loadEvents() {
      //Angular $resource factory
      EventsService.getEvents({}, function(response) {
        var events = response.events;
        var now = new Date().getTime();
        $scope.currentevent = null;
          for(var i = 0; i<events.length && $scope.currentEvent === null; i++){
            var value = events[i];
            if(new Date(value.start).getTime()<now && new Date(value.end).getTime()>now){
              $scope.currentEvent = value;
          }
        }
        //I use daypilot to show the events, the below code only updates the list of events if 
        //The events have changed
        var currentEvents = JSON.stringify($scope.scheduler.events.list);
        var newEvents = JSON.stringify(events);
        if(currentEvents!=newEvents){
          $scope.scheduler.events.list = events;
          $scope.scheduler.update();
        }
        $timeout(function () {
          loadEvents();
        }, 10000);
      });
}
函数loadEvents(){
//资源工厂
getEvents({},函数(响应){
var事件=response.events;
var now=new Date().getTime();
$scope.currentevent=null;

对于(var i=0;我只是一个想法,但可能事件正在累积,而不是被替换。可能是您正确地调用了它,但仍然保留了一些对旧事件的引用,因为库没有像您预期的那样将其清除。您是否尝试过查看是否存在某种“清除”调度程序上的函数?它似乎不会累积,因为当我记录事件时,列表仅包含最近请求的事件。此外,似乎没有一种方法可以一次清除所有事件,我一次只能删除一个事件。请参阅:我的第一印象是该事件被多次触发。你确定超时了吗是设置单个事件而不是重复事件吗?是的,超时触发单个事件。我还尝试了$interval,这导致了相同的延迟问题。我将首先使用Chrome开发工具中的探查器,特别是记录堆分配或获取堆快照探查器,以查看它是否确实是内存问题,如果是,则检查哪些项如果没有,您仍然可以进行CPU分析,这可能会为您提供一些指示,指出什么是滞后的。