Angular HttpClient:最初のAPI呼び出しが終了するまでさらにAPI呼び出しを行います

ベルリアン

ほとんどのAPIリクエスト/呼び出しで送信されるログインCookieを使用してユーザーを確認するアプリがあります。(ログインに成功すると、サーバーによって設定されます。)

問題は、私のアプリが起動時に同時に一連のapi呼び出しを実行しているため、無効なセッションIDを持つ呼び出しが発生し、それらの呼び出しごとにサーバー側で再作成されるため、セッションIDが異なる=>ユーザーがログに記録されることです。アウト。

私の計画は、お互いが許可される前に1つのAPI呼び出しを送信することです。しかし、どういうわけか私はそれを正しい順序で動作させることができません。

私は、ラッパーコンストラクターで最初の呼び出しが終了した後に解決される約束を思いつきました。

private firstCallMade: Promise<any>;

constructor(
    private http: HttpClient,
    private settings: SettingsProvider)
  {    
    this.settings.getAsyncString("apiEndpoint").then(res =>
    {
      this.apiUrl = res;

      this.firstCallMade = new Promise((resolve, reject) =>
      {
        this.http.get(this.apiUrl + this.firstCallEndpoint, { withCredentials: true })
        .subscribe(
          (result) => {
            this.logger.system(this, 'First Call', `First call successful: ${JSON.stringify(result)}`);
            resolve();
          },
          (error) => {
            this.logger.system(this, 'First Call', `First call failed: ${JSON.stringify(error)}`);
            resolve();
          });
      });
    });
  }

そして他のラッパーメソッドでは私はそれをそのように使用します

  get<T>(endpoint: string): Observable<T>
  {
    return new Observable<T>(subscriber =>
    {
      this.firstCallMade.then(_ =>
      {
        this.http.get<T>(this.apiUrl + endpoint)
          .subscribe(
            next => subscriber.next(next),
            error => subscriber.error(error));
      });
    });
  }

しかし、これは機能しません。

私のコードは間違っていますか?

明確化のための編集必要なのはすべてですが、最初の呼び出しが終了した、最初の呼び出しを同時に行うことができます(したがって、後続の呼び出しに適切なCookieデータを設定します)。

アレックスオノゾール

1 forkJoinは必要ありません、mergeMapまたはconcatMapが必要です、forkJoinは通常は悪いのですが、なぜですか?1つの要求が失敗すると、他のすべてが失敗するためです。

たとえば、mergeMapとconcatMapは、10個のリクエストの1つが失敗した場合、他の9個は終了を試み続けます。

mergeMapとconcatMapの違いは、リクエストの実行方法です。mergeMapでは、「ワンプッシュ」でサーバーに送信されます。つまり、10の日付をプルし、mergeMapで10の日付のリクエストを実行するとします。 concatMapがキューに新しいリクエストを追加するために前のリクエストが終了するのを待つ間、前のリクエストが終了するのを待たずに。

ここに「concatMap、mergeMap、forkJoinの使用方法」の例がありますhttps://angular-bojdob.stackblitz.io

これはトーマス(英語)からのものです:https//blog.angularindepth.com/practical-rxjs-in-the-wild-requests-with-concatmap-vs-mergemap-vs-forkjoin-11e5b2efe293

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

AngularのHttpInterceptorで実際のhttp呼び出しが行われる前に、別のhttp apiを(インターセプトなしで)呼び出します

分類Dev

AngularはAPI呼び出しを減らします

分類Dev

Angular $ q.allは、最初の約束が終了した後に呼び出されます

分類Dev

Angular-関数呼び出しが終了するのを待って、コードを続行します

分類Dev

Angular-API呼び出しからのTodo結果を表示します

分類Dev

API呼び出しがAngular&Typescriptで完了するのを待つ方法

分類Dev

API呼び出しからの応答のマッピングに関するAngular6HttpClientの問題

分類Dev

AngularでAPIを呼び出すことができません

分類Dev

Angular HTTP observableがn秒以内に応答しない場合は、バックグラウンドでAPI呼び出しを実行します

分類Dev

Angular-複数の連続するAPI呼び出しを1つの結果にマージします

分類Dev

Angular7-API呼び出しから応答を取得します

分類Dev

AngularリゾルバーはAPI呼び出しを待っている間にページを壊します

分類Dev

2つの呼び出しが終了するのをAngularで待つ方法

分類Dev

API呼び出しでAngularサービスを使用する方が良いのはなぜですか?

分類Dev

次の2つの呼び出しで最初の呼び出しからの応答を使用するAngular / RXJSネストされたオブザーバブル

分類Dev

Angular 2 HTTPPOSTはOPTIONS呼び出しを行います

分類Dev

Angularはhttp呼び出しを2回行います

分類Dev

Angular5 HttpClient、GETAPI呼び出し後に変数を設定します

分類Dev

Angular2およびRxJSの複数のHTTP呼び出し-最初の応答が返されるとすぐに表示されます

分類Dev

API呼び出しを複数回行っていますが、Angular6でajaxを1回だけトリガーしたい

分類Dev

Angularで重複するAPI呼び出しを停止するにはどうすればよいですか?

分類Dev

API呼び出しでAngular6を使用して動的に更新されるグラフを作成する

分類Dev

Angular Subsinkで2つのAPI呼び出しを処理する方法は?

分類Dev

コンポーネントをAngularのままにしたら、連続関数が呼び出されるのを停止します

分類Dev

Angular 8でのAPI呼び出し、結果が定義されていません

分類Dev

REST APIを呼び出す方法を理解し、応答からのデータをAngular2で表示する

分類Dev

API $ http deleteは、Angularでファクトリから呼び出すと405を返します

分類Dev

Angular6からPDFをダウンロードするSpringboot apiを呼び出すと、エラーが発生し、応答を解析できません

分類Dev

複数のAPI呼び出しについてAngularで解決

Related 関連記事

  1. 1

    AngularのHttpInterceptorで実際のhttp呼び出しが行われる前に、別のhttp apiを(インターセプトなしで)呼び出します

  2. 2

    AngularはAPI呼び出しを減らします

  3. 3

    Angular $ q.allは、最初の約束が終了した後に呼び出されます

  4. 4

    Angular-関数呼び出しが終了するのを待って、コードを続行します

  5. 5

    Angular-API呼び出しからのTodo結果を表示します

  6. 6

    API呼び出しがAngular&Typescriptで完了するのを待つ方法

  7. 7

    API呼び出しからの応答のマッピングに関するAngular6HttpClientの問題

  8. 8

    AngularでAPIを呼び出すことができません

  9. 9

    Angular HTTP observableがn秒以内に応答しない場合は、バックグラウンドでAPI呼び出しを実行します

  10. 10

    Angular-複数の連続するAPI呼び出しを1つの結果にマージします

  11. 11

    Angular7-API呼び出しから応答を取得します

  12. 12

    AngularリゾルバーはAPI呼び出しを待っている間にページを壊します

  13. 13

    2つの呼び出しが終了するのをAngularで待つ方法

  14. 14

    API呼び出しでAngularサービスを使用する方が良いのはなぜですか?

  15. 15

    次の2つの呼び出しで最初の呼び出しからの応答を使用するAngular / RXJSネストされたオブザーバブル

  16. 16

    Angular 2 HTTPPOSTはOPTIONS呼び出しを行います

  17. 17

    Angularはhttp呼び出しを2回行います

  18. 18

    Angular5 HttpClient、GETAPI呼び出し後に変数を設定します

  19. 19

    Angular2およびRxJSの複数のHTTP呼び出し-最初の応答が返されるとすぐに表示されます

  20. 20

    API呼び出しを複数回行っていますが、Angular6でajaxを1回だけトリガーしたい

  21. 21

    Angularで重複するAPI呼び出しを停止するにはどうすればよいですか?

  22. 22

    API呼び出しでAngular6を使用して動的に更新されるグラフを作成する

  23. 23

    Angular Subsinkで2つのAPI呼び出しを処理する方法は?

  24. 24

    コンポーネントをAngularのままにしたら、連続関数が呼び出されるのを停止します

  25. 25

    Angular 8でのAPI呼び出し、結果が定義されていません

  26. 26

    REST APIを呼び出す方法を理解し、応答からのデータをAngular2で表示する

  27. 27

    API $ http deleteは、Angularでファクトリから呼び出すと405を返します

  28. 28

    Angular6からPDFをダウンロードするSpringboot apiを呼び出すと、エラーが発生し、応答を解析できません

  29. 29

    複数のAPI呼び出しについてAngularで解決

ホットタグ

アーカイブ