框架
版本
Debouncer API 参考
Throttler API 参考
速率限制器 API 参考
队列 API 参考
批处理器 API 参考

createAsyncQueuer

函数:createAsyncQueuer()

ts
function createAsyncQueuer<TValue>(fn, initialOptions): SolidAsyncQueuer<TValue>
function createAsyncQueuer<TValue>(fn, initialOptions): SolidAsyncQueuer<TValue>

定义于:async-queuer/createAsyncQueuer.ts:130

创建一个与 Solid 兼容的 AsyncQueuer 实例,用于管理异步项目队列,并为所有有状态属性公开 Solid 信号。

特性:

  • 通过 getPriority 或项目 priority 属性实现优先级队列
  • 可配置的并发限制
  • FIFO(先进先出)或 LIFO(后进先出)队列行为
  • 暂停/恢复处理
  • 任务取消
  • 项目过期
  • 成功、错误、完成、项目更改等生命周期回调
  • 所有有状态属性(活动项目、待处理项目、计数等)都作为 Solid 信号公开以实现响应性

任务将并发处理,直至达到配置的并发限制。当一个任务完成时, 如果并发限制允许,则处理下一个待处理任务。

错误处理:

  • 如果提供了 onError 处理程序,它将与错误和队列器实例一起被调用
  • 如果 throwOnError 为 true(未提供 onError 处理程序时的默认值),则会抛出错误
  • 如果 throwOnError 为 false(提供 onError 处理程序时的默认值),则会吞没错误
  • onError 和 throwOnError 可以一起使用;处理程序将在抛出任何错误之前被调用
  • 可以使用底层的 AsyncQueuer 实例检查错误状态

示例用法:

tsx
// 用于 API 请求的基本异步队列器
const asyncQueuer = createAsyncQueuer(async (item) => {
  // 处理项目
  return await fetchData(item);
}, {
  initialItems: [],
  concurrency: 2,
  maxSize: 100,
  started: false,
  onSuccess: (result) => {
    console.log('项目已处理:', result);
  },
  onError: (error) => {
    console.error('处理失败:', error);
  }
});

// 将项目添加到队列
asyncQueuer.addItem(newItem);

// 开始处理
asyncQueuer.start();

// 在 UI 中使用 Solid 信号
const pending = asyncQueuer.pendingItems();
// 用于 API 请求的基本异步队列器
const asyncQueuer = createAsyncQueuer(async (item) => {
  // 处理项目
  return await fetchData(item);
}, {
  initialItems: [],
  concurrency: 2,
  maxSize: 100,
  started: false,
  onSuccess: (result) => {
    console.log('项目已处理:', result);
  },
  onError: (error) => {
    console.error('处理失败:', error);
  }
});

// 将项目添加到队列
asyncQueuer.addItem(newItem);

// 开始处理
asyncQueuer.start();

// 在 UI 中使用 Solid 信号
const pending = asyncQueuer.pendingItems();

类型参数

TValue

参数

fn

(value) => Promise<any>

initialOptions

AsyncQueuerOptions<TValue> = {}

返回

SolidAsyncQueuer<TValue>