文档
CodeRabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
CodeRabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
防抖器 API 参考
节流器 API 参考
速率限制器 API 参考
队列 API 参考
批处理器 API 参考
队列 API 参考

排队

函数: queue()

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

定义于: queuer.ts:732

创建一个队列,在添加项目时立即处理它们。项目默认按FIFO顺序顺序处理。

此同步版本更轻量级,通常是你所需要的 - 当你需要Promise、重试支持、中止能力、并发执行或高级错误处理时,升级到 asyncQueue。

状态管理

  • 使用 TanStack Store 进行响应式状态管理
  • 使用 initialState 来在创建queuer时提供初始状态值
  • 使用 onExecute 回调来响应项目执行并实现自定义逻辑
  • 使用 onItemsChange 回调函数来响应项目被添加到或从队列中移除
  • 使用 onExpire 回调函数来响应项目过期并实现自定义逻辑
  • 使用 onReject 回调函数来响应项目在队列已满时被拒绝
  • 状态包括执行计数、过期计数、拒绝计数和isRunning状态
  • 可以通过底层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

类型参数

TValue

TValue

参数

fn

(item) => void

initialOptions

QueuerOptions<TValue>

Returns (返回)

ts
(
   item, 
   position, 
   runOnItemsChange): boolean;

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

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

用法示例

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

参数

item

TValue

位置

QueuePosition = ...

runOnItemsChange

boolean = true

Returns (返回)

boolean