JavaScript监听器不断增加

Ste*_*fan 1 javascript google-chrome listeners angularjs

我实现了一个Web应用程序,并使用谷歌开发人员工具监控性能.我注意到听众不断增加,堆也是如此.

在此输入图像描述

听众增加的部分看起来像这样

let ival = $interval(function () {
    $http.get('someurl') // this call is actually done through a service, don't know if that matters
}, 1000)
Run Code Online (Sandbox Code Playgroud)

我会理解,如果堆增长是因为一些数据没有被垃圾收集器收集,但我不明白为什么听众会增加?

这是一个可重复的,最小的例子:

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>
Run Code Online (Sandbox Code Playgroud)

和script.js文件:

angular.module("exampleModule", [])
  .controller("someController", [ "$http", "$interval", function ($http, $interval) {

    $interval(function () {
      $http.get('script.js')
    }, 1000)

  }])
Run Code Online (Sandbox Code Playgroud)

观看演奏时的结果与上图中的相同.您应该使用简单的Web服务器来发出GET请求.

rob*_*lep 10

根据这个问题,更具体地说是这个评论,它是由Chrome在录制性能时间线期间不是垃圾收集监听器引起的.