当每10秒调用一个函数时,Javascript页面会在几个小时后变得滞后
我通过每10秒调用一个函数刷新javascript页面中的数据,该函数从我的服务器请求最新的数据 这是每10秒调用一次的函数:当每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
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分析,这可能会为您提供一些指示,指出什么是滞后的。