件名RxJsは「ホット」であるが、それは最初からそれから伝搬すべての値を取得する「コールド」件名を作成することは可能でしょうか?RxJSでCold Subjectを作成するにはどうすればいいですか?デフォルトでは
すなわち:
let s = new Subject();
s.next(1);
s.next(2);
s.subscribe(n => console.log(n)); //to get here 1 2 3
s.next(3);
件名RxJsは「ホット」であるが、それは最初からそれから伝搬すべての値を取得する「コールド」件名を作成することは可能でしょうか?RxJSでCold Subjectを作成するにはどうすればいいですか?デフォルトでは
すなわち:
let s = new Subject();
s.next(1);
s.next(2);
s.subscribe(n => console.log(n)); //to get here 1 2 3
s.next(3);
ReplaySubjectを使用してこれを行うことができます。一つのことは、ReplaySubjectは作成中の数値がバッファするべき値の数を知ることを期待していることです。すべての要素をバッファリングすることはできません。
const subject = new Rx.ReplaySubject(10);
subject.next("1");
subject.next("2");
subject.next("3");
subject.next("4");
subject.next("5");
subject.subscribe(
(val) => console.log(val)
);
subject.next("6");
// Logs out
// 1
// 2
// 3
// 4
// 5
// 6
ReplaySubject
はあなたが記述どおりに動作します。詳細は、ReactiveX Subject docsを参照してください。
あなたはバッファサイズを指定する必要はありません。何も指定されなければ 'Math.pow(2、53) - 1'にデフォルト設定されます。 –