Ich überlege, ob Observables oder Versprechen in meiner neuen Angular 2 App verwendet werden sollen. Mir wurde gesagt, dass Observables alles tun können, was Versprechen tun können und mehr, aber ich bin neugierig, wie viel Overhead-Observables im Vergleich zu Versprechungen erfordern. Hat jemand Benchmark-Tests durchgeführt? Gibt es irgendwelche Gründe, Versprechungen zu verwenden?Gibt es einen Overhead bei der Verwendung von Observables im Gegensatz zu Versprechen?
Antwort
Während beide Observablen und verspricht mit asynchronen Verarbeitung befassen, gibt es einige Unterschiede:
- Observable kann abgebrochen werden. Versprechen können nicht.
- Observables sind faul und werden nur ausgeführt, wenn Callbacks abonniert werden. Versprechen werden immer ausgeführt, wenn sie erstellt werden.
- Observables können mehrere Ereignisse verarbeiten, während Versprechen nur einmal gelöst werden können.
- Observable bieten eine Reihe von Operatoren asynchronen Datenstrom zu erzeugen (wie
map
,flatMap
,filter
, ...)
Vielen Dank für Ihre Antwort, aber ich interessiere mich speziell für die Overhead-Frage. Sind Observables ressourcenhungriger als Versprechungen, und wenn ja, wie viel? – rasmusrim
Gern geschehen! Ich denke nicht, dass Overheads bei der Verwendung von Observablen auftreten. Was Sie vorsichtig sein müssen, ist nicht zu vergessen Abonnements abzubestellen, die beim Abonnieren erstellt wurden ... –
Das einzige Problem könnte die Tatsache sein, dass Sie rxjs importieren müssen, um Observables zu verwenden, und sogar gedacht haben, dass Sie selbst auswählen können, welche Teile Sie benötigen. Rxjs wird immer noch ziemlich groß. Aber Sie verwenden bereits Angular 2, so dass Sie sowieso rxjs importieren müssen. –
- 1. Overhead bei der Verwendung von Keyword dies?
- 2. Verwendung von getBean im Gegensatz zu Methode Injektion im Frühjahr
- 3. Gibt es Nachteile bei der Verwendung von AJAX als RIA?
- 4. Gibt es einen Wert bei der Verwendung eines Silverlight-Frameworks?
- 5. Gibt es einen Vorteil bei der Verwendung einer Python-Klasse?
- 6. Gibt es bei der Verwendung von Blochs Builder Pattern einen Speicher- und Leistungseinbruch?
- 7. Versprechen Verkettung bei Verwendung von $ Timeout
- 8. jquery laden Daten bei der Eingabe (im Gegensatz zum Klicken)
- 9. Gibt es einen geringen Overhead-Weg, um einen Maus-Doppelklick mit Delphi zu haken?
- 10. Welche Schwächen gibt es bei der Verwendung von Erlang?
- 11. Vorteil der Ausgabe von JSON im Gegensatz zu reinem HTML
- 12. Gibt es Nachteile bei der Verwendung von -O3 in GCC?
- 13. Gibt es eine Möglichkeit, stark typisierte Ressourcendateien öffentlich zu machen (im Gegensatz zu internen)?
- 14. Was schützt die Formularauthentifizierung im Gegensatz zur Verwendung der Sitzungsvariablen?
- 15. Warum gibt IE11 einen Fehler bei der Verwendung von window.onbeforeunload?
- 16. Gibt es Leistungseinbußen bei der Verwendung mehrerer Instanzen von CLLocationManager
- 17. Gibt es einen Effizienzvorteil bei der Verwendung von INT vs GUID für einen Primärschlüssel?
- 18. Es gibt einige Fehler bei der Verwendung von Passenger
- 19. Probleme bei der Verwendung von SharedPreferences für einen Service (getPreferences gibt es für einen Service nicht)
- 20. Gibt es einen Nachteil bei der Verwendung der ES6-Vorlagenliteralsyntax ohne einen Vorlagenausdruck?
- 21. Gibt es einen Vorteil bei der Verwendung von AND und OR über && und || in PHP?
- 22. Bilder auf einem separaten Server - gibt es Overhead?
- 23. Was ist der Vorteil der Verwendung Put und Löschen im Gegensatz zu nur erhalten und Post
- 24. Gibt es Nachteile bei der Verwendung der Android Support Library?
- 25. Angular 2.0 - Konvertierung Verkettung zu Observables
- 26. Gibt es einen echten Vorteil der Verwendung von J #?
- 27. Gibt es eine Möglichkeit, Zirkelreferenzen bei der Verwendung von StructureMap zu erkennen und zu beheben?
- 28. val() Schleife Möglichkeiten im Gegensatz zu jedem()
- 29. RequireJS: Wann 'Pfade' im Gegensatz zu 'Paketen'
- 30. Szenario für die Verwendung von Elastic Suche als primäre DB im Gegensatz zu MongoDB
@ GünterZöchbauer Der Titel legt nahe, dass es ein Duplikat ist, aber der Körper der Frage ausdrücklich, dass es sich auf Leistungsaspekte bezieht, die nicht durch das Duplikat abgedeckt sind. – estus
Siehe auch http://stackoverflow.com/questions/37364973/angular-2-promise-vs-observable –