RxJS mergeMap, concatMap, switchMapの違い
以下、共通関数。
function sto(x, time = 1000) { const observable = new Observable(subscriber => { setTimeout(() => { subscriber.next(x) subscriber.complete() }, time); }); return observable } function cl(x) { console.log(x) }
- mergeMap
of(0, 1, 2).pipe( mergeMap(x => sto(x + 1, 1000)) ) .subscribe(cl)
1,2,3 と同時に表示される。
- concatMap
of(0, 1, 2).pipe( concatMap(x => sto(x + 1, 1000)) ) .subscribe(cl)
1,2,3 と1秒間隔で表示される。
- switchMap
of(0, 1, 2).pipe( switchMap(x => sto(x + 1, 1000)) ) .subscribe(cl)
3 と表示される。
1,2 はキャンセルされる。