Heim > Web-Frontend > js-Tutorial > Hauptteil

Sollten Sie Rückrufe mit AngularJS-Versprechen verwenden?

Barbara Streisand
Freigeben: 2024-11-09 20:22:02
Original
801 Leute haben es durchsucht

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

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

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

yourModule.getTokens()
  .then(function(response) {
    // handle it
  });
Nach dem Login kopieren

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!

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