この記事では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オペレータのプログラム例
お読み頂きありがとうございました。