I'm tidak jelas pada perbedaan antara Subjek dan BehaviorSubject. Itu hanya bahwa BehaviorSubject memiliki getValue fungsi?
Sebuah BehaviorSubject memegang satu nilai. Ketika itu berlangganan memancarkan nilai segera. Subjek doesn't memegang nilai.
Subjek contoh (dengan RxJS 5 API):
const subject = new Rx.Subject();
subject.next(1);
subject.subscribe(x => console.log(x));
Konsol output akan kosong
BehaviorSubject contoh:
const subject = new Rx.BehaviorSubject();
subject.next(1);
subject.subscribe(x => console.log(x));
Konsol output: 1
Selain itu:
BehaviourSubject akan mengembalikan nilai awal atau nilai saat ini pada Langganan
var subject = new Rx.BehaviorSubject(0); // 0 is the initial value
subject.subscribe({
next: (v) => console.log('observerA: ' + v) // output initial value, then new values on `next` triggers
});
subject.next(1); // output new value 1 for 'observer A'
subject.next(2); // output new value 2 for 'observer A', current value 2 for 'Observer B' on subscription
subject.subscribe({
next: (v) => console.log('observerB: ' + v) // output current value 2, then new values on `next` triggers
});
subject.next(3);
Dengan output:
observerA: 0
observerA: 1
observerA: 2
observerB: 2
observerA: 3
observerB: 3
Subjek tidak mengembalikan nilai saat ini pada Langganan. Itu hanya memicu on .berikutnya(nilai)
call dan return/output nilai
var subject = new Rx.Subject();
subject.next(1); //Subjects will not output this value
subject.subscribe({
next: (v) => console.log('observerA: ' + v)
});
subject.subscribe({
next: (v) => console.log('observerB: ' + v)
});
subject.next(2);
subject.next(3);
Dengan output sebagai berikut pada console:
observerA: 2
observerB: 2
observerA: 3
observerB: 3
Aku hanya menciptakan sebuah proyek yang menjelaskan apa perbedaan antara semua mata pelajaran:
https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async