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

排队

函数: queue()

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

定义于: queuer.ts:717

创建一个队列,该队列会立即处理添加的项目。默认情况下,项目按先进先出 (FIFO) 的顺序依次处理。

这是 Queuer 类的简化包装器,只暴露了 addItem 方法。队列始终处于运行状态,并将处理添加进来的项目。要更精细地控制队列处理,请直接使用 Queuer 类。

状态管理

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

用法示例

ts
// Basic sequential processing
const processItems = queue<number>((n) => console.log(n), {
  wait: 1000,
  onItemsChange: (queuer) => console.log(queuer.peekAllItems())
});
processItems(1); // Logs: 1
processItems(2); // Logs: 2 after 1 completes

// Priority queue
const processPriority = queue<number>((n) => console.log(n), {
  getPriority: n => n // Higher numbers processed first
});
processPriority(1);
processPriority(3); // Processed before 1
// Basic sequential processing
const processItems = queue<number>((n) => console.log(n), {
  wait: 1000,
  onItemsChange: (queuer) => console.log(queuer.peekAllItems())
});
processItems(1); // Logs: 1
processItems(2); // Logs: 2 after 1 completes

// Priority queue
const processPriority = queue<number>((n) => console.log(n), {
  getPriority: n => n // Higher numbers processed first
});
processPriority(1);
processPriority(3); // Processed before 1

类型参数

TValue

参数

fn

(item) => void

initialOptions

QueuerOptions<TValue>

Returns (返回)

Function

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

如果项目已成功添加,则返回 true;如果队列已满,则返回 false。

用法示例

ts
queuer.addItem('task');
queuer.addItem('task2', 'front');
queuer.addItem('task');
queuer.addItem('task2', 'front');

参数

item

TValue

位置

QueuePosition = ...

runOnItemsChange

boolean = true

Returns (返回)

boolean

我们的合作伙伴
Code Rabbit
Unkey
订阅 Bytes

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

Bytes

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

订阅 Bytes

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

Bytes

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