2
私は入力html要素を持っており、基本的なタイプが先に観測を使用して機能を検索すること:Observableで複数のdebounceTimeを使用するにはどうすればよいですか?
コード:だから基本的に私はそれぞれの間で少なくとも200ミリ秒で入力した任意のキーワードをキャプチャしてい
@Output() keywordChange = new EventEmitter();
this.keyword$ = Observable.fromEvent(myInput, 'keyup');
this.keyword$
.map((event: any) => event.target.value)
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword));
キーアップ。
これで、「最新の検索」を表示するために、ユーザーがCookieで検索しているものはすべて保存しますが、保存する前に3000ミリ秒待っています。 値が入力されました。
は、私は次のコードは動作しません知っているが、ただ、私はこれに似何かを達成したい示すために:異なるdebounceTimesで複数の物事を行うための演算子をチェーン、
this.keyword$
.map((event: any) => event.target.value)
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword))
.debounceTime(3000)
.subscribe(keyword => addKeyWordToLatestSearches(keyword));
は何とかこのことは可能ですか?
この例では、共有を使用しない場合の影響は何ですか?私はそれを試してみて、あなたの例はshare()なしでも動作するようです。シェアは単純に複数のサブスクリプションではなく、1つのサブスクリプションを追跡するだけで済むようにしていますか? – Weblurk
'share()'はストリームマルチキャストを行い、したがって両方のサブスクリプションは同じソースになります。あなたの例はシンプルさのために 'share()'なしで動作します。あなたが資源の重いサブスクリプション(dbコール、httpコールなど)を開始するとき、 'share()'は行く方法です –
これは実際にあなたのソースに依存します。しかし、たとえば角度2のhttp APIを使用して共有せずにこの処理を行う場合、すべてのサブスクライバが独自のhttp要求をトリガーします。したがって、 'share'メソッドは、元のストリームのイベントを再利用することによって複数のサブスクライバを処理するサブスクライバとオブザーバブルの組み合わせと考えることができるサブジェクトを作成します。 –