>웹 프론트엔드 >JS 튜토리얼 >AngualrJs가 타이머를 지울 때 직면하는 함정을 해결하는 방법

AngualrJs가 타이머를 지울 때 직면하는 함정을 해결하는 방법

小云云
小云云원래의
2018-01-29 10:55:271345검색

이 글은 주로 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로 대응해야 하며 불일치하는 부분은 지워지지 않습니다.

관련 권장 사항:

진행 표시줄 기능을 구현하는 자바스크립트 타이머

위 내용은 AngualrJs가 타이머를 지울 때 직면하는 함정을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.