私はストリームが少しの運をもって最新の値だけを再生しようとしています。基本的に、私はreplaySubject(1)
を手に入れることはできません。.onNext
です。私がやりたいことは、それを取って別のものにマップし、その後に初期値を追加することです。私の最初の本能は、以下ましたReplaySubjectのような観察可能な行為を作る
:
stream: test -1
stream: test 0
を印刷し
var testInStream = new Rx.ReplaySubject(1);
var testOutStream = testInStream.startWith(-1);
testInStream.onNext(0);
setTimeout(function(){
testOutStream.subscribe(function(x){
console.log("stream:", x);
});
}, 1000);
しかし、私は唯一のstream: test 0
を印刷する方法を見つけるしたいと思います。私が思い付くことができます最も近いものは、私が欲しいものである
stream: test 0
を返し
var testInStream = new Rx.ReplaySubject(1);
var testOutStream = testInStream.startWith(-1);
testInStream.onNext(0);
var wrapperSubject = new Rx.ReplaySubject(1);
testOutStream.subscribe(function(new_val){ wrapperSubject.onNext(new_val) });
setTimeout(function(){
wrapperSubject.subscribe(function(x){
console.log("stream:", x);
});
}, 1000);
です。しかし、私はむしろ中間のreplaySubjectを作成しないで、testOutStream.latest()
やtestOutStream.replay(1)
のようなものを呼び出すことを好みますが、まだそれらのいずれかを動作させることはできません。
私の例ではJS Binのヘルプがあります。
RxJs 5ではshareReplayが削除されているようですhttps://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md –
はい、OPは '.onNext'を使って件名を使用していますので、彼はRxjs v4またはそれ以下を使用しています。実際にはjsbinから、OPは4.0.6を使用します – user3743222