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

createQueuer

函数:createQueuer()

ts
function createQueuer<TValue>(fn, initialOptions): SolidQueuer<TValue>
function createQueuer<TValue>(fn, initialOptions): SolidQueuer<TValue>

定义于:queuer/createQueuer.ts:108

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

特性:

  • 使用提供的 fn 函数同步处理项目
  • FIFO(先进先出)或 LIFO(后进先出)队列行为
  • 通过 getPriority 或项目 priority 属性实现优先级队列
  • 项目过期和删除过时项目
  • 可配置的项目处理间隔时间
  • 暂停/恢复处理
  • 队列状态更改、执行、拒绝和过期的回调
  • 所有有状态属性(项目、计数等)都作为 Solid 信号公开以实现响应性

队列按顺序同步处理项目,每个项目之间可以有可选的延迟。启动后,它将在每个滴答处理一个项目,滴答之间可以有可选的等待时间。您可以使用 stop()start() 暂停和恢复处理。

默认情况下,队列使用 FIFO 行为,但您可以通过在添加或删除项目时指定位置来配置 LIFO 或双端队列。

示例用法:

tsx
// Solid 信号和调度示例
const [items, setItems] = createSignal([]);

const queue = createQueuer(
  (item) => {
    // 同步处理项目
    console.log('正在处理', item);
  },
  {
    started: true, // 立即开始处理
    wait: 1000,    // 每秒处理一个项目
    onItemsChange: (queue) => setItems(queue.peekAllItems()),
    getPriority: (item) => item.priority // 优先处理优先级较高的项目
  }
);

// 添加要处理的项目 - 它们将被自动处理
queue.addItem('task1');
queue.addItem('task2');

// 控制调度程序
queue.stop();  // 暂停处理
queue.start(); // 恢复处理

// 通过信号访问队列状态
console.log('项目:', queue.allItems());
console.log('大小:', queue.size());
console.log('是否为空:', queue.isEmpty());
console.log('是否正在运行:', queue.isRunning());
console.log('下一个项目:', queue.nextItem());
// Solid 信号和调度示例
const [items, setItems] = createSignal([]);

const queue = createQueuer(
  (item) => {
    // 同步处理项目
    console.log('正在处理', item);
  },
  {
    started: true, // 立即开始处理
    wait: 1000,    // 每秒处理一个项目
    onItemsChange: (queue) => setItems(queue.peekAllItems()),
    getPriority: (item) => item.priority // 优先处理优先级较高的项目
  }
);

// 添加要处理的项目 - 它们将被自动处理
queue.addItem('task1');
queue.addItem('task2');

// 控制调度程序
queue.stop();  // 暂停处理
queue.start(); // 恢复处理

// 通过信号访问队列状态
console.log('项目:', queue.allItems());
console.log('大小:', queue.size());
console.log('是否为空:', queue.isEmpty());
console.log('是否正在运行:', queue.isRunning());
console.log('下一个项目:', queue.nextItem());

类型参数

TValue

参数

fn

(item) => void

initialOptions

QueuerOptions<TValue> = {}

返回

SolidQueuer<TValue>