Heim >Web-Frontend >js-Tutorial >Warum ist die Verwendung von Rückrufen in Promise-Methoden „.then' ein Anti-Pattern?

Warum ist die Verwendung von Rückrufen in Promise-Methoden „.then' ein Anti-Pattern?

Barbara Streisand
Barbara StreisandOriginal
2024-11-14 14:40:02741Durchsuche

Why is Using Callbacks in Promise `.then` Methods an Anti-Pattern?

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');
};

Im Verbrauchermodul können Sie .then dann direkt verwenden, um Operationen zu verketten:

yourModule.getTokens()
  .then(function(response) {
    // handle it
  });

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!

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