コンテンツにスキップ

レート制限

batchSize で同時実行数を制限する

Section titled “batchSize で同時実行数を制限する”

batchSize は同時に実行するタスクの数です。次のバッチは、現在のバッチのタスクがすべて完了してから始まります。

// API 呼び出しは同時に最大 5 件
await batchProcess(userIds, async (userId) => {
return await fetchUserDataFromAPI(userId)
}, { batchSize: 5 })

メモリや CPU の使用量を抑えたい場合にも同じオプションが使えます。

// メモリ問題を避けるため 10 件ずつ処理する
await batchProcess(largeDataset, async (data) => {
return await processHeavyOperation(data)
}, { batchSize: 10 })

delayBetweenBatches でリクエスト間隔を空ける

Section titled “delayBetweenBatches でリクエスト間隔を空ける”

delayBetweenBatches は、最初のバッチを除く各バッチの開始前に、指定したミリ秒だけ待機します。

// 5 件ずつ処理し、バッチ間で 1 秒待つ
await batchProcess(
apiRequests,
async (request) => await fetch(request.url),
{
batchSize: 5,
delayBetweenBatches: 1000
}
)

配列を分割するだけなら、arrayBatch を直接使えます。

import { arrayBatch } from 'chunk-process'
arrayBatch([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3)
// [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

batchSize が正の整数でない場合、arrayBatch は例外を投げます。