孤独プログラマー譚

孤独死が近い。

RxJS 2度クリック防止

よくある「非同期通信が走るボタンクリックで、2度押し禁止」。
RxJSはexhaustMapで対応できる。
わざわざフラグ用の変数を作る必要がない。

const rx = require('rxjs');
const op = require('rxjs/operators');

rx.interval(100).pipe(op.take(5))
.pipe(
  op.exhaustMap(v => rx.of(v).pipe(op.delay(200)))
  // 0, 2, 4 と表示される
  // 1, 3 はキャンセルされる
)
.subscribe(cl)