これを理解しようとするとAngularとRxの新機能...私のアプリはUIイベントに反応し、Observableを返すHTTPサービスを呼び出します。私はそうのようにそれを購読する:switchmapと別のobservables
this.myXYZService.search(query)
.map(r => { // some code })
.subscribe(r => { //some code });
は、そのイベントが再びトリガし、それが第一コールが終了する前に観察可能な新ブランドが返されます同じHTTPサービスへの2番目の呼び出しを行うことになり言います。
私はそれを理解しているので、マップの代わりにswitchMapを使用して古いObservableを破棄し、新しいObservableを操作できますか?それとも私はこれを間違って理解していますか?第1イベントが既にチェーンの購読部分に入った後に第2イベントがトリガーされた場合はどうなりますか?この場合、もはや切り替わることはありませんか? JSは同期しているので、2番目のイベントでもチェーンの処理が始まる前に、1番目のチェーン全体が実行されませんか?
Observablesのインスタンスが異なるため、私はすべてのことが混乱していると思います。どのようにRxがどのコールを切り替えるかを追跡していますか?それは関数名ですか?私は正確に何が起こるか上記の両方にswitchMapを使用する場合
this.myXYZService.search('abcd')
.map(r => { // some code })
.subscribe(r => { //some code });
this.myXYZService.search('efgh')
.map(r => { // some code })
.subscribe(r => { //some code });
:私は、コードの2つの別々のブロックを持っていると言いますか? 2回目のコールは最初にキャンセルされますか?
「キャンセル」という用語で通話が良好です。私は人々がこの用語をよく使うと思うのは、ネットワークタブにキャンセルと言われているからです。 – LLai
ありがとう、この場合、searchTermsは外側の観測可能になります。 – SBKDeveloper
@Eliseo switchMapとflatMapとconcatMapの間に良い[記事](https://tolikcode.github.io/post/rxjsMap/)があります。技術的にはこれらのすべてを使用して、オブザベーブルを連続して連鎖させることができます。しかし、内側の観察可能なものは、オペレータに基づいて異なって反応する。 switchMapを使用すると、前の内部観測値は、外部観測値が放出されたときに破棄されます。したがって、ある意味では、新しいものが作成されたとき(内側の観測可能なものが放出されたとき)、内側の観測可能なものを「切り換え」ます – LLai