Observable内の値を取得します

Spセシャ

サーバーにリクエストを送信し、観察可能な応答を取得します。データ内には、別のドキュメントを参照するIDがあり、データをフェッチして親Observableのデータを追加するために別のリクエストを送信する必要があります。これを達成する方法は?

Promiseでは、async / awaitを使用してこれを行うことができますが、Observablesを使用してこれを実現する方法を知りたいです

有望なサンプル

async func_name() {
  let data1 = await <first_server_call_returns_promise>();
  let data2 = await <second_call_with_data1.id_returns_promise>();
  data1.value = data2;
  return data1;
}

Observablesで上記を達成する方法は?

編集1

@TeddySterneの返信に基づいて、私が書いたコードは以下のとおりですが、実際のデータではなくサブスクライブ内でオブザーバブルを取得しているため、オブザーバブルをhtmlに割り当てることができません。

this.blogDoc.snapshotChanges().pipe(
    exhaustMap((blogs) => {
        return blogs.map(blog => {
          const data = blog.payload.doc.data();
          const id = blog.payload.doc.id;
          return this.userService.getUserById(data.uid).pipe(
            map((user) => {
              const name = user.name;
              return { id, name, ...data}
            }),
          )
        })
    }),
  )
  .subscribe(finalData => {
    finalData.subscribe(data => console.log(data));
  });

編集2

以下は私が今持っている更新されたコードです

this.blogDoc.snapshotChanges().pipe(
      exhaustMap((blogs: any[]) => {
        return zip(blogs.map((blog) => {
          const data = blog.payload.doc.data();
          const id = blog.payload.doc.id;
          console.log(data);
          return this.userService.getUserById(data.uid).pipe(
            map((value) => {
              console.log(value);
              return value;
            })
          )
        })).pipe(first())
      })
    ).subscribe(values => console.log("Values: ", values));

console.log(data)正しくデータを出力しますが、console.log(value)印刷されたり取得されていませんconsole.log("Values: ", values)

subscribe onを使用するthis.userService.getUserById(data.uid)と、期待されるシングルユーザードキュメントが返されます。

ここで何が欠けていますか?

テディスター

を使用しexhaustMapてデータを2番目のhttp呼び出しにパイプし、データが戻ってきたときにデータをマージできます。

import { zip } from 'rxjs/observable/zip';

this.http.get('/data1').pipe(
  exhaustMap((data1Arr: any[]) => {
    return zip(...data1Arr.map((data1) => {
      return this.http.get('/data2/' + data1.id).pipe(
        map((data2) => {
          data1.value = data2;
          return data1;
        }),
      );
    }).pipe(first());
  }),
).subscribe((fullQualifiedData) => {
  // do stuff with the data
});

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

.tsコード内のObservable値を取得します

分類Dev

オブジェクト内のObservable <SomeObject>の値を取得します

分類Dev

Observableの最新の値を取得し、すぐに出力します

分類Dev

PromiseTypescript内の値を取得します

分類Dev

RxJSは、Observableの放出前/放出後の値を取得します

分類Dev

Angular2のobservableから最新の値を取得します

分類Dev

Observableから最後の値を取得します

分類Dev

AngularはObservable <object []>から特定の値を取得します

分類Dev

配列内の値の平均を合計して取得します

分類Dev

UISliderを使用して、範囲内の整数値を取得します

分類Dev

sparksqlは、列内の以前のnull以外の値を取得します

分類Dev

SwiftUIは、ViewModel内の別のViewModelの値を取得します

分類Dev

Rapidjson、別の配列の配列内の値を取得します

分類Dev

他の関数javascript内の変数の値を取得します

分類Dev

DataList内のDropDownListから選択した値を取得します

分類Dev

配列内の要素の値を取得します

分類Dev

配列内の要素の値を取得します

分類Dev

配列内の配列の値を取得します

分類Dev

ReactJSは配列内の数値の合計を取得します

分類Dev

関数内の文字列の値を取得します

分類Dev

Cで、範囲内の等間隔の数値を取得します

分類Dev

Androidの2DArrayList内の値を取得しますか?

分類Dev

PHP-多次元配列内の特定の値を取得します

分類Dev

Python、__ init__内のself.request.get()の値を取得します

分類Dev

クラス内のreturnの値を取得します

分類Dev

同じdiv内の兄弟の値を取得します

分類Dev

配列内の値のキーを取得します

分類Dev

迅速に辞書内の配列の値を取得します

分類Dev

内の属性の値に応じて要素を取得します

Related 関連記事

  1. 1

    .tsコード内のObservable値を取得します

  2. 2

    オブジェクト内のObservable <SomeObject>の値を取得します

  3. 3

    Observableの最新の値を取得し、すぐに出力します

  4. 4

    PromiseTypescript内の値を取得します

  5. 5

    RxJSは、Observableの放出前/放出後の値を取得します

  6. 6

    Angular2のobservableから最新の値を取得します

  7. 7

    Observableから最後の値を取得します

  8. 8

    AngularはObservable <object []>から特定の値を取得します

  9. 9

    配列内の値の平均を合計して取得します

  10. 10

    UISliderを使用して、範囲内の整数値を取得します

  11. 11

    sparksqlは、列内の以前のnull以外の値を取得します

  12. 12

    SwiftUIは、ViewModel内の別のViewModelの値を取得します

  13. 13

    Rapidjson、別の配列の配列内の値を取得します

  14. 14

    他の関数javascript内の変数の値を取得します

  15. 15

    DataList内のDropDownListから選択した値を取得します

  16. 16

    配列内の要素の値を取得します

  17. 17

    配列内の要素の値を取得します

  18. 18

    配列内の配列の値を取得します

  19. 19

    ReactJSは配列内の数値の合計を取得します

  20. 20

    関数内の文字列の値を取得します

  21. 21

    Cで、範囲内の等間隔の数値を取得します

  22. 22

    Androidの2DArrayList内の値を取得しますか?

  23. 23

    PHP-多次元配列内の特定の値を取得します

  24. 24

    Python、__ init__内のself.request.get()の値を取得します

  25. 25

    クラス内のreturnの値を取得します

  26. 26

    同じdiv内の兄弟の値を取得します

  27. 27

    配列内の値のキーを取得します

  28. 28

    迅速に辞書内の配列の値を取得します

  29. 29

    内の属性の値に応じて要素を取得します

ホットタグ

アーカイブ