しばらくの間結果をキャッシュするObservableを作成しました。この例はすばらしい、非常に便利です!しかし、アイテムプロデューサのタイムアウトを設定できませんでした。 mockDataFetch()
のタイムアウト演算子を使用しようとしましたが、最初に失敗した項目の後にストリームを復元できませんでした。 タイムアウトでmockDataFetch
を達成するにはどうすればよいですか?RxJS Observableでcache throught `.publishReplay()`のタイムアウトを設定する方法は?
これは私がやったことを正確です:一方
const Observable = Rx.Observable;
var counter = 1;
var updateRequest = Observable.defer(() => mockDataFetch())
.publishReplay(1, 1000)
.refCount();
function mockDataFetch() {
return Observable.of(counter++)
.delay(Math.floor((Math.random() * 100) + 1))
.timeout(50);
}
function mockHttpCache() {
return updateRequest
.take(1);
}
、mockDataFetch
内Excpetionを取得した場合はどうなりますか?次の項目(1000秒後、publishReplay
メソッドで定義されているように)では、observableが新しい項目を生成することが期待されます。
優秀な答えを。ありがとう!!私はあなたの提案に従った。 私は、エラーを受け取ることができると同時に、将来の観察者に観察可能なものを提供し続ける方法を見出そうと考えました。 ReactiveX仕様によれば、エラーや完全な通知の後に新しい項目を受け取ることはできませんが、他の項目を囲むような観測可能な項目を持つことは可能ですが、同様の効果を得ることは可能です。つまり、最初の観測は、その下線観測の放出を傍受し、エラーの場合は、将来のサブスクリプションのために新たな観測可能性を構築する。 – cspinetta