> 웹 프론트엔드 > JS 튜토리얼 > AngualrJ에서 타이머를 지울 때 발생하는 문제

AngualrJ에서 타이머를 지울 때 발생하는 문제

黄舟
풀어 주다: 2017-10-13 11:12:32
원래의
1130명이 탐색했습니다.

이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿