1
documentation on BehaviorSubject状態最後の値を排出しない:なぜ `BehaviorSubject`は、それは関係なく、私が加入したときの最後の放出された値を返す必要がありますが、それは私のためにそれを返さないことを
const ofObservable = Rx.Observable.of(1, 2, 3);
const subject = new Rx.BehaviorSubject();
ofObservable.subscribe(subject);
subject.subscribe((v) => {
console.log(v);
}, null,() => {
console.log('completed');
});
コードログcompleted
のみ。
ReplaySubject
は、上記のコードでは正常に動作し、ログは1, 2, 3, completed
となります。
おかげで、その後、 'ReplaySubject'の作業を行い、なぜ?それは、観測可能な源から放出された「完全な」影響を受けていないのですか? –
あなたが説明したアプローチでは、被験者は決して完了しませんよね? –
明らかに、 'ReplaySubject'は実際には購読しませんが、格納された値はすべてとにかく再生されます。あなたはそれをhttps://github.com/ReactiveX/rxjs/blob/master/src/ReplaySubject.ts#L41で見ることができます。 BehaviorSubjectは基本 'Subject'クラスのように振る舞うはずですが、常に少なくとも1つのアイテムが必ず出てくることを保証するだけで、' ReplaySubject'は本当にアイテムのシーケンス全体を再生する必要があるからです。 – martin