私は最新の要素を得るためにシーケンスを '排除する'というソリューションを持っていました。そして、そのシーケンスが空であれば、最後の要素を取りますが、扱いにくく、リプレイサイズを3に増やす)。私はリプレイ/ビヘイビアの被験者はパイプを通したときに管理が難しい傾向にあることを思い出しました。その最も簡単な解決策は、したがって、(あなたReplaySubjectに変換/操作することによって、それを作成するのではなく)、それに「影」配列とパイプあなたReplaySubjectを作成することである。
var subject$ = new Rx.ReplaySubject(3);
var lastValue$ = new Rx.ReplaySubject(1);
subject$.subscribe(lastValue$); // short hand for subject$.subscribe(v => lastValue$.next(v))
lastValue$.take(1).toPromise().then(...);
======== ReplaySubjectを無視==旧溶液、(2)=================
以下のコメントを読んだ後、正しいコードは次のとおり
Rx.Observable.combineLatest(possiblyReplayedIncomplteObservable).take(1).subscribe(...)
〜ではない
Rx.Observable.combineLatest(possiblyReplayedIncomplteObservable).subscribe(...)
これは、約束が「一度」観察可能であるという事実によるものです。私はtoPromise()
コードが完了時にのみ結果を解決すると思います。
take(1)
は、combineLatest
によって作成された新しいストリームで動作するため、元のストリームには影響しません。
そして実際に、最も簡単な方法は次のとおりです。
possiblyReplayedIncomplteObservable.take(1).toPromise().then(...)
あなたは別のものを使用することはできませんが、観察リプレイ - むしろN値よりも、単一のリプレイ値を持っている - 同じソースを使用していますか?それはあなたが探している行動ですよね? – cartant