Verwenden von Callbacks in Promise .then-Methoden: Ein Anti-Pattern
Die Praxis der Bereitstellung einer Callback-Funktion für einen AngularJS-Dienst, wie in gezeigt Der von Ihnen bereitgestellte Codeausschnitt mag praktisch erscheinen, folgt jedoch einem Anti-Muster. Dieser Ansatz stört den von Promises beabsichtigten asynchronen Programmierfluss und die Umkehrung der Kontrolle.
Warum ist es ein Anti-Pattern?
-
Unterbricht die Verkettung: Mit Promise .then-Methoden können Sie mehrere asynchrone Vorgänge verketten. Durch die Verwendung eines Rückrufs verlieren Sie die Möglichkeit, das Ergebnis einer Operation in einer nachfolgenden Operation problemlos weiterzuverarbeiten.
-
Umkehrung der Kontrolle: Der ursprüngliche Code kehrt die Kontrolle der Ausführung um, indem er das übergibt Rückruf vom Consumer-Modul zum Provider-Modul. Dadurch wird es schwieriger, den Ausführungsfluss zu verwalten und zu debuggen.
-
Unnötige Promise-Komplexität: Promises bieten einen Mechanismus zur Handhabung asynchroner Vorgänge. Indem Sie Versprechen in Rückrufe verpacken, führen Sie zu unnötiger Komplexität und verschleiern die Absicht des Codes.
Refactoring-Lösung:
Um den Code umzugestalten und diese Probleme zu beseitigen , können Sie eine einfache .then-Methode ohne Rückruffunktion verwenden:
var getTokens = function() {
return $http.get('/api/tokens');
};
Nach dem Login kopieren
Im Verbrauchermodul können Sie .then dann direkt verwenden, um Operationen zu verketten:
yourModule.getTokens()
.then(function(response) {
// handle it
});
Nach dem Login kopieren
Vorteile des umgestalteten Codes:
-
Behält die Verkettung bei: Durch die Rückgabe eines Promises von der getTokens-Funktion können Sie nachfolgende Vorgänge einfach verketten.
- Behält die Kontrolle: Das Verbrauchermodul steuert die Ausführung asynchroner Vorgänge, ohne auf Rückrufe angewiesen zu sein.
-
Vereinfacht den Code: Der überarbeitete Code vereinfacht den asynchronen Verarbeitungsprozess und macht ihn einfacher zu verstehen und aufrechtzuerhalten.
Das obige ist der detaillierte Inhalt vonWarum ist die Verwendung von Rückrufen in Promise-Methoden „.then' ein Anti-Pattern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!