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

异步批处理

函数: asyncBatch()

ts
function asyncBatch<TValue>(fn, options): (item) => void
function asyncBatch<TValue>(fn, options): (item) => void

定义于: async-batcher.ts:460

创建一个异步批处理程序,它将项目分批处理

与同步批处理程序不同,此异步版本

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

错误处理

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

状态管理

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

类型参数

TValue

参数

fn

(items) => Promise<any>

options

AsyncBatcherOptions<TValue>

Returns (返回)

Function

将一项添加到异步批处理程序中。如果达到批次大小、发生超时或 shouldProcess 返回 true,则将处理该批次

参数

item

TValue

Returns (返回)

void

示例

ts
const batchItems = asyncBatch<number>(
  async (items) => {
    const result = await processApiCall(items);
    console.log('Processing:', items);
    return result;
  },
  {
    maxSize: 3,
    wait: 1000,
    onSuccess: (result) => console.log('Batch succeeded:', result),
    onError: (error) => console.error('Batch failed:', error)
  }
);

batchItems(1);
batchItems(2);
batchItems(3); // Triggers batch processing
const batchItems = asyncBatch<number>(
  async (items) => {
    const result = await processApiCall(items);
    console.log('Processing:', items);
    return result;
  },
  {
    maxSize: 3,
    wait: 1000,
    onSuccess: (result) => console.log('Batch succeeded:', result),
    onError: (error) => console.error('Batch failed:', error)
  }
);

batchItems(1);
batchItems(2);
batchItems(3); // Triggers batch processing
我们的合作伙伴
Code Rabbit
Unkey
订阅 Bytes

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

Bytes

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

订阅 Bytes

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

Bytes

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