ホームページ > ウェブフロントエンド > jsチュートリアル > Angular で Observable からの非同期応答を処理するにはどうすればよいですか?

Angular で Observable からの非同期応答を処理するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-24 02:16:10
オリジナル
332 人が閲覧しました

How Do I Handle Asynchronous Responses from Observables in Angular?

Angular で Observable/http/async 呼び出しからの応答を返すにはどうすればよいですか?

問題:

Angular でサーバーからデータを取得するObservable を使用しようとすると、初期値が未定義になる可能性があります

サービス:

@Injectable()
export class EventService {
  ...
  getEventList(): Observable<any> {
    ...
    return this.http.get(...).map(...).catch(...);
  }
}
ログイン後にコピー

コンポーネント:

export class EventComponent {
  myEvents: any;
  ngOnInit() {
    this.es.getEventList().subscribe((response) => {
      this.myEvents = response;
    });
    console.log(this.myEvents); // Initially undefined
  }
}
ログイン後にコピー

理由:

HTTP リクエストは非同期です。つまり、console.log( this.myEvents) 行は応答の前に実行されます

解決策:

サブスクライブ コールバックを使用して、応答が到着した後にのみ応答を処理します。

ngOnInit() {
  this.es.getEventList().subscribe((response) => {
    this.myEvents = response;
    console.log(this.myEvents); // Not undefined
  });
}
ログイン後にコピー

考慮事項:

  • 実行データが到着したときのサブスクライブ コールバック内のすべての操作。
  • その非同期を認識します。この操作は、応答待機中のインターフェイスのフリーズを防ぎます。
  • このアプローチは、Promise ベースの非同期プログラミングの then コールバックに似ています。

以上がAngular で Observable からの非同期応答を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート