【RxJS】timerオペレータとは?「使い方」や「プログラム例」などを解説!

この記事ではRxJSの『timerオペレータ』について、

  • timerオペレータとは
  • timerオペレータのプログラム例

などを分かりやすく説明するように心掛けています。ご参考になれば幸いです。

timerオペレータとは

timerオペレータは、指定の時間が経過してから、または指定の日時にデータを流すオペレータです。返り値はObservableになります。timerオペレータは、呼び出し方によっては、指定した時間間隔でデータを流すこともできます。

以下にtimerオペレータを用いたプログラム例を示しています。

import { timer } from 'rxjs';

const numbers = timer(3000);

numbers.subscribe((value) => console.log(value));

// ログ
// 0(←3秒後に0が出力)

timer(3000)は3秒後に0を流すObservableです。

timerオペレータの構文

timer(due: number | Date, scheduler?: SchedulerLike): Observable<number>

引数dueは、初めて値を発行するまでの待ち時間をミリ秒単位で指定するか、または特定の日付/時間を指定します。指定した時間が来ると、timerオペレータは0を発行し、その後完了します。

timerオペレータのプログラム例(指定した時間間隔でデータを流す)

以下にtimerオペレータを用いたプログラム例を示しています。

import { timer } from 'rxjs';

const numbers = timer(3000, 1000);

numbers.subscribe((x) => console.log(x));

// ログ
// 3秒後に0を出力、その後1秒ごとに1, 2, 3, ...と出力

timer(3000, 1000)のように記述すると、3秒後に0を出力し、その後1秒ごとに「1→2→3→4→・・・」というデータを流すObservableになります。

timerオペレータの構文(指定した時間間隔でデータを流す場合)

timer(startDue: number | Date, intervalDuration: number, scheduler?: SchedulerLike): Observable<number>

引数startDueは、初めて値を発行するまでの待ち時間をミリ秒単位で指定するか、または特定の日付/時間を指定します。引数intervalDurationはその後の発行の間隔を指定します。この形式では、timerオペレータは0から始まり、1つずつ無限に値を発行し続けます。

【補足】 timerオペレータの引数schedulerについて

timerオペレータの引数schedulerでは、特定のアクション(たとえばObservableの発行)をいつどのように実行するかを決めます。デフォルトはasyncSchedulerです。その他にもasapSchedulerなどがあります。asyncSchedulerは非同期でタスクを実行し、asapSchedulerは、可能な限り早くタスクを実行します。

特別な要件がない限り、引数schedulerは通常省略され、デフォルトのasyncSchedulerが使用されます。

本記事のまとめ

この記事ではRxJSの『timerオペレータ』について、以下の内容を説明しました。

  • timerオペレータとは
  • timerオペレータのプログラム例

お読み頂きありがとうございました。