- Betreff : Beim Abonnieren werden immer die Daten abgerufen, die nach dem Abonnement übertragen werden, dh frühere Push-Werte werden nicht empfangen .
const mySubject = new Rx.Subject();
mySubject.next(1);
const subscription1 = mySubject.subscribe(x => {
console.log('From subscription 1:', x);
});
mySubject.next(2);
const subscription2 = mySubject.subscribe(x => {
console.log('From subscription 2:', x);
});
mySubject.next(3);
subscription1.unsubscribe();
mySubject.next(4);
In diesem Beispiel ist hier das Ergebnis, das in der Konsole gedruckt wird:
From subscription 1: 2
From subscription 1: 3
From subscription 2: 3
From subscription 2: 4
Beachten Sie, dass Abonnements, die zu spät eintreffen, einige der Daten verpassen, die in den Betreff verschoben wurden.
- Themen wiedergeben : Kann helfen, indem ein Puffer mit vorherigen Werten aufbewahrt wird, die an neue Abonnements ausgegeben werden.
Hier ist ein Verwendungsbeispiel für Wiedergabethemen, bei denen a buffer of 2 previous values
für neue Abonnements beibehalten und ausgegeben wird:
const mySubject = new Rx.ReplaySubject(2);
mySubject.next(1);
mySubject.next(2);
mySubject.next(3);
mySubject.next(4);
mySubject.subscribe(x => {
console.log('From 1st sub:', x);
});
mySubject.next(5);
mySubject.subscribe(x => {
console.log('From 2nd sub:', x);
});
Folgendes gibt uns das an der Konsole:
From 1st sub: 3
From 1st sub: 4
From 1st sub: 5
From 2nd sub: 4
From 2nd sub: 5
- Verhaltenssubjekte : ähneln Wiederholungssubjekten, geben jedoch nur den zuletzt ausgegebenen Wert oder einen Standardwert erneut aus, wenn zuvor kein Wert ausgegeben wurde:
const mySubject = new Rx.BehaviorSubject('Hey now!');
mySubject.subscribe(x => {
console.log('From 1st sub:', x);
});
mySubject.next(5);
mySubject.subscribe(x => {
console.log('From 2nd sub:', x);
});
Und das Ergebnis:
From 1st sub: Hey now!
From 1st sub: 5
From 2nd sub: 5
Referenz: https://alligator.io/rxjs/subjects/