Defined in: batcher.ts:145
A class that collects items and processes them in batches.
Batching is a technique for grouping multiple operations together to be processed as a single unit. This synchronous version is lighter weight and often all you need - upgrade to AsyncBatcher when you need promises, retry support, abort/cancel capabilities, or advanced error handling.
The Batcher provides a flexible way to implement batching with configurable:
Maximum batch size (number of items per batch)
Time-based batching (process after X milliseconds)
Custom batch processing logic via getShouldExecute
Event callbacks for monitoring batch operations
State Management:
Uses TanStack Store for reactive state management
Use initialState to provide initial state values when creating the batcher
Use onExecute callback to react to batch execution and implement custom logic
Use onItemsChange callback to react to items being added or removed from the batcher
The state includes batch execution count, total items processed, items, and running status
State can be accessed via batcher.store.state when using the class directly
When using framework adapters (React/Solid), state is accessed from batcher.state
const batcher = new Batcher<number>(
(items) => console.log('Processing batch:', items),
{
maxSize: 5,
wait: 2000,
onExecute: (batch, batcher) => console.log('Batch executed:', batch)
}
);
batcher.addItem(1);
batcher.addItem(2);
// After 2 seconds or when 5 items are added, whichever comes first,
// the batch will be processed
// batcher.flush() // manually trigger a batchTValue
new Batcher<TValue>(fn, initialOptions): Batcher<TValue>;Defined in: batcher.ts:153
(items) => void
BatcherOptions<TValue>
Batcher<TValue>
fn: (items) => void;Defined in: batcher.ts:154
TValue[]
void
key: string | undefined;Defined in: batcher.ts:149
options: BatcherOptionsWithOptionalCallbacks<TValue>;Defined in: batcher.ts:150
readonly store: Store<Readonly<BatcherState<TValue>>>;Defined in: batcher.ts:146
addItem(item): void;Defined in: batcher.ts:211
Adds an item to the batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed
TValue
void
cancel(): void;Defined in: batcher.ts:289
Cancels any pending execution that was scheduled. Does NOT clear out the items.
void
clear(): void;Defined in: batcher.ts:281
Removes all items from the batcher
void
flush(): void;Defined in: batcher.ts:259
Processes the current batch of items immediately
void
peekAllItems(): TValue[];Defined in: batcher.ts:267
Returns a copy of all items in the batcher
TValue[]
reset(): void;Defined in: batcher.ts:297
Resets the batcher state to its default values
void
setOptions(newOptions): void;Defined in: batcher.ts:180
Updates the batcher options
Partial<BatcherOptions<TValue>>
void