웹 응용 프로그램을 구현하고 Google 개발자 도구로 성능을 모니터링했습니다. 나는 청취자가 계속 증가하고 있고 그래서 힙이 있음을 주목한다.자바 스크립트 리스너 증가 계속
부분은 청취자 내가 힙 때문에 가비지 컬렉터에 의해 수집에 beeing없는 일부 데이터의 증가한다면 이해할이
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 파일 :
angular.module("exampleModule", [])
.controller("someController", [ "$http", "$interval", function ($http, $interval) {
$interval(function() {
$http.get('script.js')
}, 1000)
}])
결과는 성능을보고 위의 그림과 같습니다. GET 요청을하려면 간단한 웹 서버를 사용해야합니다.
어딘가에 '$ interval.cancel (ival);'이라고 부르시겠습니까, 아니면 그 간격을 어쨌든 멈추시겠습니까? 아니면 오래된 간격을 멈추지 않고 새로운 간격을 반복해서 만들어야합니까? –
활동이 삭제되면 $ interval.cancel (ival)이 호출됩니다. 활동이 작성 될 때 간격이 작성됩니다. – Stefan
앱이 표시된 스 니펫으로 만 구성되어있는 경우에도 유사하게 작동합니까? 그렇지 않은 경우 문제를 재현하는 http://stackoverflow.com/help/mcve를 제공해야합니다. 거의 모든 것이 될 수 있습니다. – estus