function createQueuer<TValue>(fn, initialOptions): SolidQueuer<TValue>
function createQueuer<TValue>(fn, initialOptions): SolidQueuer<TValue>
定义于:queuer/createQueuer.ts:108
创建一个与 Solid 兼容的 Queuer 实例,用于管理同步项目队列,并为所有有状态属性公开 Solid 信号。
特性:
队列按顺序同步处理项目,每个项目之间可以有可选的延迟。启动后,它将在每个滴答处理一个项目,滴答之间可以有可选的等待时间。您可以使用 stop() 和 start() 暂停和恢复处理。
默认情况下,队列使用 FIFO 行为,但您可以通过在添加或删除项目时指定位置来配置 LIFO 或双端队列。
示例用法:
// 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
(item) => void
QueuerOptions<TValue> = {}
SolidQueuer<TValue>