programing

퍼포먼스를 중시하는 $broadcast 또는 $watch란 무엇입니까?

testmans 2023. 3. 6. 20:50
반응형

퍼포먼스를 중시하는 $broadcast 또는 $watch란 무엇입니까?

사용자의 역할이 변경될 때마다 메뉴를 새로고침해야 하는 상황이 있습니다(여러 회사에서 한 명의 사용자가 역할을 가질 수 있습니다).

나는 이 문제에 접근하는 가장 좋은 방법이 무엇인지 궁금했다.

현재 다음 작업을 하고 있습니다.

app.controller('menuLoadingCtrl', function($location, $scope, authService){
    $scope.model.initialRole = authService.getRole();
    $scope.$watch(function(){return authService.getRole()}, function(val){
        if(val && val != $scope.model.initialRole){
                $scope.layout.menuSrc = 'partials/menu.html';
        }
    });
})

사용자를 메뉴 로드 보기로 리디렉션하고 역할 로드가 완료되면 다시 메뉴 보기로 리디렉션합니다.함수로 포장되어 있습니다.

 $scope.layout.reloadMenu = function(){
        $scope.layout.menuSrc = 'partials/menuLoading.html';
    }

메뉴를 새로고침하고 싶은 시나리오에서 호출합니다.

$rootScope의 서비스에서 이 이벤트를 브로드캐스트한 후 컨트롤러에서 재생함으로써 이 프로세스를 보다 자동화할 수 있는지 궁금합니다.

이에 대한 어떤 의견도 주시면 대단히 감사하겠습니다.

$watch()먼지 검사를 수행하고 있습니다. 이 함수는 각 다이제스트 사이클을 비교합니다.반면에,$broadcast()는 이벤트가 존재하는 경우에만 이벤트를 전파합니다.당연히.$broadcast()보다 싸다$watch().

그런데 굳이 퍼포먼스를 신경 쓸 필요가 있었나?순환에 의한 하나의 원시적인 비교는 아무것도 아니다.하지만 개념적으로는$watch()필요한 것은 분명합니다.변수가 변경될 마다 액션을 수행합니다.나는 그것을 사용하는 것을 상상할 수 없다.$broadcast()여기서.

언급URL : https://stackoverflow.com/questions/19616520/what-is-cheaper-performance-wise-broadcast-or-watch

반응형