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);