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

异步排队

函数: asyncQueue()

ts
function asyncQueue<TValue>(fn, initialOptions): (item, position, runOnItemsChange) => boolean
function asyncQueue<TValue>(fn, initialOptions): (item, position, runOnItemsChange) => boolean

定义于: async-queuer.ts:781

创建一个新的 AsyncQueuer 实例并返回一个绑定的 addItem 函数用于添加任务。Queuer 会自动启动并准备好处理任务。

错误处理

  • 如果提供了 onError 处理程序,它将接收错误和 queuer 实例作为参数。
  • 如果 throwOnError 为 true(当没有提供 onError 处理程序时的默认值),错误将被抛出
  • 如果 throwOnError 为 false(当提供 onError 处理程序时的默认值),错误将被吞没
  • onError 和 throwOnError 可以一起使用;处理程序将在任何错误被抛出之前被调用。
  • 可以使用底层的 AsyncQueuer 实例来检查错误状态。

状态管理

  • 使用 TanStack Store 进行响应式状态管理
  • 使用 initialState 在创建 async queuer 时提供初始状态值。
  • 使用 onSuccess 回调来响应成功的任务执行并实现自定义逻辑。
  • 使用 onError 回调来响应任务执行错误并实现自定义错误处理。
  • 使用 onSettled 回调来响应任务执行完成(成功或失败)并实现自定义逻辑。
  • 使用 onItemsChange 回调来响应添加到队列或从队列中移除的项目。
  • 使用 onExpire 回调来响应项目过期并实现自定义逻辑。
  • 使用 onReject 回调来响应队列已满时被拒绝的项目。
  • 状态包括错误计数、过期计数、拒绝计数、运行状态以及成功/完成计数。
  • 状态可以通过底层 AsyncQueuer 实例的 store.state 属性访问。
  • 在使用框架适配器(React/Solid)时,状态从 hook 的 state 属性访问

用法示例

ts
const enqueue = asyncQueue<string>(async (item) => {
  return item.toUpperCase();
}, {...options});

enqueue('hello');
const enqueue = asyncQueue<string>(async (item) => {
  return item.toUpperCase();
}, {...options});

enqueue('hello');

类型参数

TValue

参数

fn

(value) => Promise<any>

initialOptions

AsyncQueuerOptions<TValue>

Returns (返回)

Function

将一个项目添加到队列。如果队列已满,该项目将被拒绝并调用 onReject。项目可以根据优先级插入,或者根据配置插入到队列的前面/后面。

参数

item

TValue

位置

QueuePosition = ...

runOnItemsChange

boolean = true

Returns (返回)

boolean

示例

ts
queuer.addItem({ value: 'task', priority: 10 });
queuer.addItem('task2', 'front');
queuer.addItem({ value: 'task', priority: 10 });
queuer.addItem('task2', 'front');
我们的合作伙伴
Code Rabbit
Unkey
订阅 Bytes

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

Bytes

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

订阅 Bytes

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

Bytes

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