コンテンツにスキップ

counter

指定された間隔でインクリメントされる数値を発行する Observable を作成します。 start() 直後のマクロタスクで 0 を発行し(startManually を指定しなければ生成時に start() されます)、その後一定間隔で 1, 2, 3, … と発行します。 0 が発行された後に subscribe したものは 0 を受け取りません。

  • startManually(既定 false): 生成時ではなく start() の呼び出しで開始します。
  • emitInitial(既定 true): false にすると start() 直後の 0 を発行せず、1 インターバル後の 1 から発行します。counter(ms) は RxJS の timer(0, ms)、counter(ms, { emitInitial: false }) は interval(ms) に当たります。
// Timeline:
//
// Time(s) 0 1 2 3 4 5
// tick$ 0 1 2 3 4 5 ...
//
// Explanation:
// - counter emits incrementing numbers at specified intervals
// - Starts at 0 and continues indefinitely
// - Useful for periodic tasks or animations
const tick$ = counter(100);
const valueHistory: number[] = [];
const subscription = tick$.subscribe((count) => {
valueHistory.push(count);
});
await new Promise((resolve) => {
setTimeout(resolve, 350);
});
subscription.unsubscribe();
assert.isTrue(Arr.isMinLengthArray(3, valueHistory));
assert.strictEqual(valueHistory[0], 0);
assert.strictEqual(valueHistory[1], 1);
assert.strictEqual(valueHistory[2], 2);

View source on GitHub