2016-10-04 26 views
1

Ich habe ein Verhalten Betreff BehaviorSubject<MyModel>(new MyModel). Nach den von mir durchgeführten Lesungen erfuhr ich, dass der Abonnent immer dann ein Standardobjekt MyModel erhält, sobald ein Abonnement für das Verhaltensobjekt abgeschlossen wurde, sobald das Abonnement abgeschlossen ist.Rxjs: BehaviourSubject Wert Emission

Aber ich bin in diesem Szenario verwirrt, nehme an, einige ClassA abonniert auf das Thema des Verhaltens und dann einen Wert auf dem observable nach dem Tweaking mit ihm emittiert. Nachdem die ClassA ausgestrahlt hat, ClassB abonniert auf das Thema, so jetzt ClassB auf Abonnement erhält die new MyModel() Objekt oder das zuletzt vom Subjekt emittierte Modell.

Bitte lassen Sie mich wissen, wenn weitere Klärung erforderlich ist.

+3

Der letzte emittiert. 'BehaviorSubject' löst sofort den zuletzt ausgegebenen Wert für neue Abonnements aus. – drewmoore

+2

^^ Beachten Sie, dass dies ** nicht ** von Subjekten im Allgemeinen gilt, es bezieht sich speziell auf "BehaviorSubject". Ein 'ReplaySubject' zum Beispiel sendet sofort * alle * vorher ausgesendeten Werte der Reihe nach auf neue Abonnements. – drewmoore

+0

Ich habe kein 'ReplaySubject', es ist ein' BehaviourSubject'. Ich weiß, wie 'ReplaySubject' funktioniert –

Antwort

2

Dies begann als Kommentar, sondern in einer Antwort wandte:

In Ihrem Szenario, das ClassB Instanz die MyModel Instanz von Ihrem ClassA Beispiel emittiert bekommen, nicht das Sie zunächst über new MyModel() erstellt.

Im Allgemeinen feuert BehaviorSubject sofort den einzelnen zuletzt emittieren Wert auf neue Abonnements - dieses Verhalten ist, was ein BehaviorSubject definiert - im Vergleich zum Beispiel ein ReplaySubject emittiert sofort alle Werte, die bisher auf jedem emittiert wurden neues Abonnement

Beachten Sie, dass dies einfach empirisch zu demonstrieren ist:

Verwandte Themen