孤独プログラマー譚

孤独死が近い。

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 はキャンセルされる。