2016-07-28 8 views
2

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?

+0

@ 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

+0

Siehe auch http://stackoverflow.com/questions/37364973/angular-2-promise-vs-observable –

Antwort

2

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, ...)
+0

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

+0

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 ... –

+1

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. –

Verwandte Themen