我实施了一个Web应用程序,并使用Google开发人员工具监控了性能。我注意到听众不断增加,堆也是如此。JavaScript听众不断增加
的一部分,其中的听众都在增加看起来是这样的
let ival = $interval(function() {
$http.get('someurl') // this call is actually done through a service, don't know if that matters
}, 1000)
我会明白,如果堆增长,因为没有与否有关垃圾收集器收集了一些数据,但我不知道理解听众为什么越来越多?
这是一个可再现,最小的例子:
index.html文件:
<!doctype html>
<html ng-app="exampleModule">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div ng-controller="someController">
</div>
</body>
</html>
而且的script.js文件:
结果,当你观看演出与上图相同。你应该使用一个简单的网络服务器来发出GET请求。
你是否调用'$ interval.cancel(ival);'某处,或者以某种方式停止该间隔?或者是一个又一个新的间隔而不是停止旧的间隔? –
$ interval.cancel(ival)将在活动被销毁后被调用。间隔是在创建活动时创建的。 – Stefan
当应用程序仅包含您展示的代码片段时,它是否适用于您?如果没有,您需要提供http://stackoverflow.com/help/mcve复制您的问题。它可以是几乎所有的东西。 – estus