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)