- Subjek : Saat berlangganan, selalu mendapatkan data yang didorong setelah berlangganan, yaitu nilai yang didorong sebelumnya tidak diterima .
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);
Dengan contoh ini, inilah hasil yang akan dicetak di konsol:
From subscription 1: 2
From subscription 1: 3
From subscription 2: 3
From subscription 2: 4
Perhatikan bagaimana langganan yang datang terlambat kehilangan beberapa data yang didorong ke subjek.
- Putar ulang subjek : dapat membantu dengan menjaga buffer dari nilai sebelumnya yang akan dipancarkan ke langganan baru.
Berikut adalah contoh penggunaan untuk memutar ulang subjek di mana a buffer of 2 previous values
disimpan dan dipancarkan pada langganan baru:
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);
});
Inilah yang memberi kami di konsol:
From 1st sub: 3
From 1st sub: 4
From 1st sub: 5
From 2nd sub: 4
From 2nd sub: 5
- Subjek perilaku : mirip dengan subjek ulangan, tetapi hanya akan memancarkan kembali nilai yang terakhir dikeluarkan, atau nilai default jika tidak ada nilai yang telah dikeluarkan sebelumnya:
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);
});
Dan hasilnya:
From 1st sub: Hey now!
From 1st sub: 5
From 2nd sub: 5
Referensi: https://alligator.io/rxjs/subjects/