あるオブザーバブルから別のオブザーバブルにデータを渡す正しい方法

Avinash kumar

私は2つのHTTPAPIを持っています-

  1. tableNamesのリストを取得します
  2. メタデータのリストを取得します

表示される前のメタデータ(2番目のAPIから)をテーブル名(1番目のAPIから)を使用して変更する必要があるAngular5アプリケーションに取り組んでいます。

したがって、タスクは次のよう
になります。2つのオブザーバブルがあります。最初のobservableはに接続し、tableNames APItableNamesをもたらします。2番目のオブザーバブルはに接続しmetadata API、メタデータを取得し、tableNames API出力に従ってメタデータを変更します。最終製品(変更されたメタデータ)を、Angularアプリケーションがサブスクライブできるオブザーバブルとして保持したいと思います。

現在、コードは次のようになっています-

private tablesNames: ReadonlyArray<String> | undefined;

this.getTablesNamesObservable().subscribe(
      tablesNames => { this.tablesNames = tablesNames; }
    );

// modify metadata uses tableNames to modify the metadata
this.modifiedMetadataObservable = this.metadataService.getOperatorMetadata()
                                      .map(metadata => this.modifyMetadata(metadata));

2つの非同期操作間の同期を想定していたため、コードに満足できませんでした。この記事を読んだ直後に疑いが証明されましたそのため、記事で提案されているアプローチを使用して、新しいObservableを生成し、switchMapを使用するためのパラメーターとしてtableNamesを指定するようにコードを変更しました(concatMap / flatMapを使用することもできましたが、switchMapは要件に適合しました)。

this.getTablesNamesObservable().switchMap(
      tableNames =>{this.metadataService.getOperatorMetadata()
                        .map(metadata => this.modifyMetadata(metadata, tableNames));}
      );

これはこのタスクを実行する正しい方法ですか、それともこれを達成するための他のより良いテクニックがありますか?

カータント

getTablesNamesObservablegetOperatorMetadataが独立している場合は、次を使用する方が理にかなっていますcombineLatest

Observable.combineLatest(
  this.getTablesNamesObservable(),
  this.metadataService.getOperatorMetadata()
).map(([tableNames, metadata]) => this.modifyMetadata(metadata, tableNames));

次にmodifyMetadata、いずれかのobservableが値を発行するたびに呼び出されます。

を使用するとswitchMap、によって返されるオブザーバブルが発行さgetOperatorMetadataれるたびに、によって返されるオブザーバブルのサブスクライブを解除して再サブスクライブしますgetTablesNamesObservableそして、それらが独立している場合、つまりgetOperatorMetadataテーブル名を渡す必要がない場合は、そうする必要はないようです。

オブザーバブルがそれぞれ単一の値のみを出力する場合、またはそれぞれの最後に出力された値のみが必要な場合は、のforkJoin代わりにを使用しますcombineLatest

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

あるオブザーバブルを別のオブザーバブルから作成する方法

分類Dev

入力が他のオブザーバブルからのデータに依存するオブザーバブルをサブスクライブする方法

分類Dev

別のオブザーバブルからデータのサブセットを放出するオブザーバブルを作成します

分類Dev

あるオブザーバブルを別のオブザーバブルと呼ぶのは正しいですか?

分類Dev

別のオブザーバブルの結果に基づいてオブザーバブルを呼び出し、オブザーバブルを返す方法

分類Dev

イベントが別のオブザーバブルで発生したときに、あるオブザーバブルから値を取得します

分類Dev

別のオブザーバブルからのコンテンツに基づいてオブザーバブルのコンテンツを生成する方法

分類Dev

RxJava + Kotlin-あるオブザーバブルを別のオブザーバブルの作成に使用する

分類Dev

Angular-別のオブザーバブルからオブザーバブルを返す方法

分類Dev

角度rxjsで別のオブザーバブルを使用して1つのオブザーバブルからデータを変換します

分類Dev

Rx:異なるタイプのオブザーバブルから後続のオブザーバブルを作成します(Chainingオブザーバー)

分類Dev

RxJavaの別のオブザーバブル内にオブザーバブルをラップする方法は?

分類Dev

オブザーバブルを別のオブザーバブルにマッピングする方法

分類Dev

別のオブザーバブルから受信したデータの配列でMergeMapを使用する-RxJsAngular

分類Dev

オブザーバブルに別のオブザーバブルを入力し、オブザーバブルを返す方法

分類Dev

別のオブザーバブルからオブザーバブルを作成するにはどうすればよいですか?

分類Dev

オブザーバブルを使用してFirebaseデータベースからデータを取得する方法

分類Dev

別のオブザーバブルの.subscribe関数からオブザーバブルを返す

分類Dev

あるオブザーバブルのデータを別のオブザーバブルで使用し、結果を他のオブザーバブルとして返します

分類Dev

別のオブザーバブルからオブザーバブルを呼び出す

分類Dev

1つのオブザーバブルを使用して別のオブザーバブルを同期する

分類Dev

RxJ:2つのオブザーバブルを異なるタイプの新しいオブザーバブルに結合する方法

分類Dev

あるタイプのオブザーバブルをマージしてから、別のタイプのオブザーバブルにチェーンします

分類Dev

オブザーバブルからJQuerydatepickerに日付を渡す方法

分類Dev

RxJS:別のオブザーバブルからオブザーバブルのデフォルト値を設定する

分類Dev

別のオブザーバブルの出力に基づいてオブザーバブルをデバウンスする

分類Dev

pubnubsubscribeからオブザーバブルを作成する方法

分類Dev

オブザーバブルの配列からオブザーバブルを返す方法

分類Dev

オブザーバブルから正しいデータを取得するにはどうすればよいですか

Related 関連記事

  1. 1

    あるオブザーバブルを別のオブザーバブルから作成する方法

  2. 2

    入力が他のオブザーバブルからのデータに依存するオブザーバブルをサブスクライブする方法

  3. 3

    別のオブザーバブルからデータのサブセットを放出するオブザーバブルを作成します

  4. 4

    あるオブザーバブルを別のオブザーバブルと呼ぶのは正しいですか?

  5. 5

    別のオブザーバブルの結果に基づいてオブザーバブルを呼び出し、オブザーバブルを返す方法

  6. 6

    イベントが別のオブザーバブルで発生したときに、あるオブザーバブルから値を取得します

  7. 7

    別のオブザーバブルからのコンテンツに基づいてオブザーバブルのコンテンツを生成する方法

  8. 8

    RxJava + Kotlin-あるオブザーバブルを別のオブザーバブルの作成に使用する

  9. 9

    Angular-別のオブザーバブルからオブザーバブルを返す方法

  10. 10

    角度rxjsで別のオブザーバブルを使用して1つのオブザーバブルからデータを変換します

  11. 11

    Rx:異なるタイプのオブザーバブルから後続のオブザーバブルを作成します(Chainingオブザーバー)

  12. 12

    RxJavaの別のオブザーバブル内にオブザーバブルをラップする方法は?

  13. 13

    オブザーバブルを別のオブザーバブルにマッピングする方法

  14. 14

    別のオブザーバブルから受信したデータの配列でMergeMapを使用する-RxJsAngular

  15. 15

    オブザーバブルに別のオブザーバブルを入力し、オブザーバブルを返す方法

  16. 16

    別のオブザーバブルからオブザーバブルを作成するにはどうすればよいですか?

  17. 17

    オブザーバブルを使用してFirebaseデータベースからデータを取得する方法

  18. 18

    別のオブザーバブルの.subscribe関数からオブザーバブルを返す

  19. 19

    あるオブザーバブルのデータを別のオブザーバブルで使用し、結果を他のオブザーバブルとして返します

  20. 20

    別のオブザーバブルからオブザーバブルを呼び出す

  21. 21

    1つのオブザーバブルを使用して別のオブザーバブルを同期する

  22. 22

    RxJ:2つのオブザーバブルを異なるタイプの新しいオブザーバブルに結合する方法

  23. 23

    あるタイプのオブザーバブルをマージしてから、別のタイプのオブザーバブルにチェーンします

  24. 24

    オブザーバブルからJQuerydatepickerに日付を渡す方法

  25. 25

    RxJS:別のオブザーバブルからオブザーバブルのデフォルト値を設定する

  26. 26

    別のオブザーバブルの出力に基づいてオブザーバブルをデバウンスする

  27. 27

    pubnubsubscribeからオブザーバブルを作成する方法

  28. 28

    オブザーバブルの配列からオブザーバブルを返す方法

  29. 29

    オブザーバブルから正しいデータを取得するにはどうすればよいですか

ホットタグ

アーカイブ