框架
版本
防抖器 API 参考
节流器 API 参考
速率限制器 API 参考
队列 API 参考
批处理器 API 参考

批处理器

类:Batcher<TValue>

定义于:batcher.ts:144

一个收集项目并以批次处理它们的类。

批处理是一种将多个操作组合在一起作为单个单元进行处理的技术。

Batcher 提供了一种灵活的方式来实现具有可配置的批处理

  • 最大批次大小(每批项目数)
  • 基于时间的批处理(X 毫秒后处理)
  • 通过 getShouldExecute 进行自定义批处理逻辑
  • 用于监控批处理操作的事件回调

状态管理

  • 使用 TanStack Store 进行响应式状态管理
  • 使用 initialState 在创建 batcher 时提供初始状态值
  • 使用 onExecute 回调来响应批处理执行并实现自定义逻辑
  • 使用 onItemsChange 回调来响应添加到批处理程序或从中移除的项目
  • 状态包括批处理执行计数、处理的总项目数、项目和运行状态
  • 当直接使用该类时,可以通过 batcher.store.state 访问状态
  • 当使用框架适配器(React/Solid)时,状态可以从 batcher.state 访问

示例

ts
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 batch
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 batch

类型参数

TValue

构造函数

new Batcher()

ts
new Batcher<TValue>(fn, initialOptions): Batcher<TValue>
new Batcher<TValue>(fn, initialOptions): Batcher<TValue>

定义于:batcher.ts:152

参数

fn

(items) => void

initialOptions

BatcherOptions<TValue>

Returns (返回)

Batcher<TValue>

属性

fn()

ts
fn: (items) => void;
fn: (items) => void;

定义于:batcher.ts:153

参数

items

TValue[]

Returns (返回)

void


key

ts
key: string;
key: string;

定义于:batcher.ts:148


options

ts
options: BatcherOptionsWithOptionalCallbacks<TValue>;
options: BatcherOptionsWithOptionalCallbacks<TValue>;

定义于:batcher.ts:149


store

ts
readonly store: Store<Readonly<BatcherState<TValue>>>;
readonly store: Store<Readonly<BatcherState<TValue>>>;

定义于:batcher.ts:145

方法

addItem()

ts
addItem(item): void
addItem(item): void

定义于:batcher.ts:204

将一个项目添加到 batcher。如果达到批次大小、发生超时或 shouldProcess 返回 true,则将处理该批次。

参数

item

TValue

Returns (返回)

void


clear()

ts
clear(): void
clear(): void

定义于:batcher.ts:274

移除 batcher 中的所有项目

Returns (返回)

void


flush()

ts
flush(): void
flush(): void

定义于:batcher.ts:252

立即处理当前批次的项目

Returns (返回)

void


peekAllItems()

ts
peekAllItems(): TValue[]
peekAllItems(): TValue[]

定义于:batcher.ts:260

返回 batcher 中所有项目的副本

Returns (返回)

TValue[]


reset()

ts
reset(): void
reset(): void

定义于:batcher.ts:281

将 batcher 状态重置为默认值

Returns (返回)

void


setOptions()

ts
setOptions(newOptions): void
setOptions(newOptions): void

定义于:batcher.ts:173

更新 batcher 选项

参数

newOptions

Partial<BatcherOptions<TValue>>

Returns (返回)

void

我们的合作伙伴
Code Rabbit
Unkey
订阅 Bytes

您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。

Bytes

无垃圾邮件。您可以随时取消订阅。

订阅 Bytes

您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。

Bytes

无垃圾邮件。您可以随时取消订阅。