- Konu : Abone olurken, abonelikten sonra itilen verileri her zaman alır, yani önceki itilen değerler alınmaz .
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);
Bu örnekle, konsolda yazdırılacak sonuç şu şekildedir:
From subscription 1: 2
From subscription 1: 3
From subscription 2: 3
From subscription 2: 4
Geç gelen aboneliklerin konuya aktarılan bazı verilerin nasıl eksik olduğuna dikkat edin.
- Tekrar oynatma konuları : yeni aboneliklere gönderilecek önceki değerlerin bir arabelleğini tutarak yardımcı olabilir .
Aşağıda, a'nın buffer of 2 previous values
tutulduğu ve yeni aboneliklerde yayınlandığı yeniden oynatma konuları için bir kullanım örneği verilmiştir :
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);
});
Bunun bize konsolda verdiği şeyler:
From 1st sub: 3
From 1st sub: 4
From 1st sub: 5
From 2nd sub: 4
From 2nd sub: 5
- Davranış konuları : tekrar konularına benzer, ancak yalnızca son yayınlanan değeri veya daha önce herhangi bir değer gönderilmemişse varsayılan bir değeri yeniden yayar:
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);
});
Ve sonuç:
From 1st sub: Hey now!
From 1st sub: 5
From 2nd sub: 5
Referans: https://alligator.io/rxjs/subjects/