(バックエンドの高価な計算のため).share()演算子を使用しているオブザーバブルで非同期パイプを使用すると、この現象が発生しました:角2 + rxjs:.share()演算子を使用した非同期パイプ
data$ = (new Observable(observer => {
let counter=0;
observer.next(counter)
window.setInterval(() => {
observer.next(counter);
counter++;
}, 2000);
}))
.share();
テンプレート:
{{ (data$|async) !== null }}
{{ (data$|async) !== null }}
初期値の出力である:
true false
次出力(2秒以上経過した後)は次のようになります。
これは私が最初の値として期待している動作です。 .share()を省略した場合、最初の値の出力は "true true"となります。上記の動作は、テンプレートの最初の式が観測可能な実行をトリガーし、2番目の非同期パイプが観測可能オブジェクトにサブスクライブすると、データは既に消失しているためです。この説明は正しいですか?そして、どうすればこの問題を回避できますか? the referenceによれば
する必要があります。 observer.complete() ' – estus
単一の値を持つ例はデモンストレーションのためのもので、私のアプリではobservableに複数の値があります – highwaychile
あなたのケースを反映したコードを入力してください。 – estus