Heim >Web-Frontend >js-Tutorial >Warum sind Rückrufe in AngularJS Promise Chains schädlich?

Warum sind Rückrufe in AngularJS Promise Chains schädlich?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-13 05:08:02398Durchsuche

Why are Callbacks Detrimental in AngularJS Promise Chains?

Warum die Verwendung von Rückrufen in AngularJS-Versprechensketten schädlich ist

Es wird oft empfohlen, eine Rückruffunktion für AngularJS-Dienste bereitzustellen, wie im gezeigt Codeausschnitt unten:

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens(function callbackFn(tokens) {
        $scope.tokens = tokens;
    });
});

Diese Praxis wird jedoch als Anti-Pattern nicht empfohlen. AngularJS-Dienste wie $http geben Versprechen zurück, und das Anhängen von Callback-Methoden an ihre .then-Methoden stellt eine unerwünschte Umkehrung der Kontrolle dar.

Refactoring

Um dieses Problem zu beheben, ändern Sie die Code wie folgt:

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens()
        .then(function(response) {
            $scope.tokens = response.data;
        });
});

Im Servicemodul:

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

    return {
        getTokens: getTokens
    };
});

Dieses Refactoring eliminiert die Callback-Funktion und behält den gewünschten Kontrollfluss durch die .then-Methode bei.

Begründung für Refactoring

Rückrufe wie im Originalcode implementiert:

  • Verhindern Sie eine weitere Verkettung von Erfolgs-/Fehlerhandlern.
  • Schichtsteuerung Überantwortverarbeitung vom Anrufermodul zum aufgerufenen Modul.
  • Stellen Sie die Komplexität von Versprechen vor und verwenden Sie sie gleichzeitig als Rückrufe. Dieses Paradox macht den Code verwirrend.

Das obige ist der detaillierte Inhalt vonWarum sind Rückrufe in AngularJS Promise Chains schädlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn