LoginSignup
1
0

More than 3 years have passed since last update.

RxJSのmergeMap便利ですね

Last updated at Posted at 2019-07-14

subscribeのネスト嫌だ

Angularで待ち合わせ処理を実装しないといけなくてsubscribeネストさせるの嫌だなーと思って、RxJSいろいろ調べていたらmergeMapっていう便利なオペレータ見つけました。

this.appService.get1().subscribe(v1 => {
  // get1の購読が終わってからgetを購読させたい
  this.appService.get2().subscribe(v2 => {
    // 処理
  });
});

subscribeがネストしていてとても嫌ですね。

this.appService.get1().pipe(
  mergeMap(() => this.appService.get2()),
).subscribe(v2 => {
  // 処理
});

mergeMap使うとネストバイバイできます。
ただ注意しないといけないことがあって、subscribeして流れてくるのはthis.appService.get2()Observableだけです。

具体的にどういう時にmergeMap使えるかですけど、例えば https://apis.google.com/js/api.js の読み込みが終わってから gapi.auth2 の処理したい時とかに使えますね。

サンプルコード(ng-gapi)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0