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

异步批处理器

类: AsyncBatcher<TValue>

定义于: async-batcher.ts:230

一个异步收集和处理项目批次的类。

这是 Batcher 类的异步版本。与同步版本不同,这个异步批处理程序

  • 处理 promises 并返回批处理执行的结果
  • 提供可配置错误行为的错误处理
  • 单独跟踪成功、错误和结算计数
  • 具有批处理执行状态的跟踪
  • 返回批处理函数执行的结果

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

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

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

错误处理

  • 如果提供了 onError 处理程序,它将被调用,并传入错误、失败的项目批次以及批处理实例
  • 如果 throwOnError 为 true(当没有提供 onError 处理程序时的默认值),错误将被抛出
  • 如果 throwOnError 为 false(当提供 onError 处理程序时的默认值),错误将被吞没
  • onError 和 throwOnError 可以一起使用 - 在任何错误被抛出之前,处理程序都会被调用
  • 可以使用 AsyncBatcher 实例检查错误状态

状态管理

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

示例

ts
const batcher = new AsyncBatcher<number>(
  async (items) => {
    const result = await processItems(items);
    console.log('Processing batch:', items);
    return result;
  },
  {
    maxSize: 5,
    wait: 2000,
    onSuccess: (result) => console.log('Batch succeeded:', result),
    onError: (error) => console.error('Batch failed:', error)
  }
);

batcher.addItem(1);
batcher.addItem(2);
// After 2 seconds or when 5 items are added, whichever comes first,
// the batch will be processed and the result will be available
// batcher.execute() // manually trigger a batch
const batcher = new AsyncBatcher<number>(
  async (items) => {
    const result = await processItems(items);
    console.log('Processing batch:', items);
    return result;
  },
  {
    maxSize: 5,
    wait: 2000,
    onSuccess: (result) => console.log('Batch succeeded:', result),
    onError: (error) => console.error('Batch failed:', error)
  }
);

batcher.addItem(1);
batcher.addItem(2);
// After 2 seconds or when 5 items are added, whichever comes first,
// the batch will be processed and the result will be available
// batcher.execute() // manually trigger a batch

类型参数

TValue

构造函数

new AsyncBatcher()

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

定义于: async-batcher.ts:238

参数

fn

(items) => Promise<any>

initialOptions

AsyncBatcherOptions<TValue>

Returns (返回)

AsyncBatcher<TValue>

属性

fn()

ts
fn: (items) => Promise<any>;
fn: (items) => Promise<any>;

定义于: async-batcher.ts:239

参数

items

TValue[]

Returns (返回)

Promise<any>


key

ts
key: string;
key: string;

定义于: async-batcher.ts:234


options

ts
options: AsyncBatcherOptionsWithOptionalCallbacks<TValue>;
options: AsyncBatcherOptionsWithOptionalCallbacks<TValue>;

定义于: async-batcher.ts:235


store

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

定义于: async-batcher.ts:231

方法

addItem()

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

定义于: async-batcher.ts:297

向异步批处理程序添加一个项目。如果达到批次大小、超时或 shouldProcess 返回 true,则批次将被处理。

参数

item

TValue

Returns (返回)

void


clear()

ts
clear(): void
clear(): void

定义于: async-batcher.ts:398

从异步批处理程序中移除所有项目。

Returns (返回)

void


flush()

ts
flush(): Promise<any>
flush(): Promise<any>

定义于: async-batcher.ts:372

立即处理当前批次的项目。

Returns (返回)

Promise<any>


peekAllItems()

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

定义于: async-batcher.ts:380

返回异步批处理程序中所有项目的副本。

Returns (返回)

TValue[]


peekFailedItems()

ts
peekFailedItems(): TValue[]
peekFailedItems(): TValue[]

定义于: async-batcher.ts:384

Returns (返回)

TValue[]


reset()

ts
reset(): void
reset(): void

定义于: async-batcher.ts:405

将异步批处理程序的状态重置为其默认值。

Returns (返回)

void


setOptions()

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

定义于: async-batcher.ts:260

更新异步批处理程序的选项。

参数

newOptions

Partial<AsyncBatcherOptions<TValue>>

Returns (返回)

void

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

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

Bytes

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

订阅 Bytes

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

Bytes

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