Heim >Web-Frontend >js-Tutorial >Sollten Sie Rückrufe mit AngularJS-Versprechen verwenden?

Sollten Sie Rückrufe mit AngularJS-Versprechen verwenden?

Barbara Streisand
Barbara StreisandOriginal
2024-11-09 20:22:02851Durchsuche

Should You Use Callbacks with AngularJS Promises?

Callback-Inversion in AngularJS: Ein Anti-Pattern

In AngularJS ist es üblich, Callback-Funktionen an Dienste zu übergeben, die Promises zurückgeben. Dieser Ansatz kann jedoch ein Anti-Pattern einführen und die Vorteile von Promises beeinträchtigen.

Anti-Pattern-Beispiel:

Betrachten Sie den folgenden Code, den der getTokens-Dienst akzeptiert eine Rückruffunktion:

...
getTokens: function(callbackFn) {
  $http.get('/api/tokens').then (function onFulfilled(response) {
    callbackFn(response.data);
  });
}
...

Dieser Ansatz hat mehrere Nachteile:

  • Kontrollumkehr: Rückruffunktionen werden im Kontext des Dienstes ausgeführt, wodurch der Kontrollfluss umgekehrt wird und es schwierig wird, dem Code zu folgen.
  • Broken Promise Chaining:Callbacks verhindern, dass Promises verkettet werden, um mehrere Ereignisse zu verarbeiten oder Daten zu manipulieren Sequenz.
  • Komplexität: Die explizite Behandlung von Rückrufen fügt der Codebasis unnötige Komplexität hinzu.

Refactoring für Best Practice:

Um dieses Anti-Pattern aufzulösen, refaktorieren Sie den Code als folgt:

...
getTokens: function() {
  return $http.get('/api/tokens');
}
...

Verwenden Sie im aufrufenden Modul das zurückgegebene Promise, um das Ergebnis zu verarbeiten:

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

Vorteile von Best Practice:

Die Übernahme dieser Best Practice bietet mehrere Vorteile:

  • Preserves Promise Verkettung: Versprechen können jetzt verkettet werden, um mehrere Vorgänge nacheinander auszuführen, was die Lesbarkeit und Wartbarkeit des Codes verbessert.
  • Vereinfachter Code: Durch das Entfernen der expliziten Behandlung von Rückrufen wird die Codebasis vereinfacht und potenzielle Fehler beseitigt .
  • Erhöhte Testbarkeit: Versprechen bieten eine saubere Schnittstelle für Testen asynchroner Vorgänge, um die Überprüfung des Codeverhaltens zu erleichtern.

Das obige ist der detaillierte Inhalt vonSollten Sie Rückrufe mit AngularJS-Versprechen verwenden?. 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