이 글은 주로 AngualrJ의 클리어 타이머가 겪게 되는 함정을 소개합니다. 도움이 필요한 친구들은 참고하시면 됩니다
angualrJ의 클리어 타이머의 구렁텅이를 오르는 방법:
오늘 이상한 문제를 발견했는데, 커스텀 명령어에 타이머가 들어있어요. 페이지 점프 후에도 다른 페이지의 루프 타이머가 계속 실행 중입니다. 이는 확실히 불가능하며 시스템 성능에 영향을 미칩니다.
Angular에서 기본 메소드인 window.onunload를 사용했는데 작동하지 않아서 Angular의 자체 메소드인 $destroy를 사용해야 했습니다. 페이지가 점프하거나 DOM 구조가 변경되면 타이머가 지워질 수 있습니다
var timer = setInterval(function(){ $scope.$apply(function(){ //这里是想要定时刷新的逻辑 }); },3000); $scope.$on('$destroy',function(){ if (timer) { clearInterval(timer); timer = null; } });
여기서 자바스크립트에서는 네이티브 setTimeout()
以及setInterval()
函数,所以清除时对应是clearTimeout()
和clearInterval()
,angular定时器是$timeOut
和$interval
,所以清除对应是$timeOut.cancel()
和$interval.cancel()
과
을 사용하고 있기 때문에 1:1로 대응해야 하며 불일치하는 부분은 지워지지 않습니다.
요약
위 내용은 AngualrJ에서 타이머를 지울 때 발생하는 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!