Angularで連鎖的にWeb APIを呼び出したい

こんなのを実装したかった。

  • あるAPIを呼んで、成功したら次のAPIを呼び出したい
  • どちらかでエラーになった時は、共通のエラー処理をしたい

初めはRxJSでconcatとかを使うのかなと思って試したが、うまくいかず。

そもそもRxJSの機能を使うと、後から見た時にどんな動きになるか分からず、リファレンスを見る必要が出てきそうで嫌。

async文なら分かりやすく書けそうなのになあ。ということでこんな感じにした。

  async process() {
    try {
      await this.apiService.apiA(this.id).toPromise();
      await this.apiService.apiB(this.id).toPromise();
    } catch (e) {
      this.error = e;
    }
  }

toPromiseしているのが少し気になったが、気にせず使えばよいようなことをAngular推しの人も書いてたので、気にしないことにしよう!

コメントを残す