> 웹 프론트엔드 > JS 튜토리얼 > AngularJS Promise Chain에서 콜백이 해로운 이유는 무엇입니까?

AngularJS Promise Chain에서 콜백이 해로운 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-13 05:08:02
원래의
380명이 탐색했습니다.

Why are Callbacks Detrimental in AngularJS Promise Chains?

AngularJS 프라미스 체인에서 콜백을 사용하는 것이 해로운 이유

다음에서 볼 수 있듯이 AngularJS 서비스에 콜백 기능을 제공하는 것이 종종 제안됩니다. 아래 코드 조각:

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens(function callbackFn(tokens) {
        $scope.tokens = tokens;
    });
});
로그인 후 복사

그러나 이 방법은 안티 패턴으로 인해 권장되지 않습니다. $http 반환 약속과 같은 AngularJS 서비스와 .then 메서드에 콜백 메서드를 연결하면 바람직하지 않은 제어 반전이 발생합니다.

리팩터링

이 문제를 해결하려면 코드는 다음과 같습니다.

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens()
        .then(function(response) {
            $scope.tokens = response.data;
        });
});
로그인 후 복사

서비스 모듈에서:

app.factory('tokenService', function($http) {
    var getTokens = function() {
        return $http.get('/api/tokens');
    };

    return {
        getTokens: getTokens
    };
});
로그인 후 복사

이 리팩토링은 콜백 함수를 제거하고 .then 메소드를 통해 원하는 제어 흐름을 유지합니다.

리팩토링의 정당성

원래 코드에 구현된 콜백:

  • 성공/오류 핸들러의 추가 연결을 방해합니다.
  • 교대 제어 호출자 모듈에서 호출된 모듈까지의 응답 처리.
  • Promise를 콜백으로 사용하는 동시에 Promise의 복잡성을 소개합니다. 이 역설은 코드를 혼란스럽게 만듭니다.

위 내용은 AngularJS Promise Chain에서 콜백이 해로운 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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