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
Freigeben: 2024-11-13 05:08:02
Original
397 Leute haben es durchsucht

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;
    });
});
Nach dem Login kopieren

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;
        });
});
Nach dem Login kopieren

Im Servicemodul:

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

    return {
        getTokens: getTokens
    };
});
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage