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

AsyncQueuer

类:AsyncQueuer<TValue>

定义于:async-queuer.ts:157

一个灵活的异步队列,用于处理具有可配置并发性、优先级和过期时间的任务。

特性:

  • 通过 getPriority 选项支持优先级队列
  • 可配置的并发限制
  • 任务成功、错误、完成和队列状态更改的回调
  • FIFO(先进先出)或 LIFO(后进先出)队列行为
  • 暂停和恢复处理
  • 任务取消
  • 项目过期以从队列中删除过时项目

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

错误处理:

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

示例用法:

ts
const asyncQueuer = new AsyncQueuer<string>(async (item) => {
  // 处理项目
  return item.toUpperCase();
}, {
  concurrency: 2,
  onSuccess: (result) => {
    console.log(result);
  }
});

asyncQueuer.addItem('hello');
asyncQueuer.start();
const asyncQueuer = new AsyncQueuer<string>(async (item) => {
  // 处理项目
  return item.toUpperCase();
}, {
  concurrency: 2,
  onSuccess: (result) => {
    console.log(result);
  }
});

asyncQueuer.addItem('hello');
asyncQueuer.start();

类型参数

TValue

构造函数

new AsyncQueuer()

ts
new AsyncQueuer<TValue>(fn, initialOptions): AsyncQueuer<TValue>
new AsyncQueuer<TValue>(fn, initialOptions): AsyncQueuer<TValue>

定义于:async-queuer.ts:171

参数

fn

(value) => Promise<any>

initialOptions

AsyncQueuerOptions<TValue>

返回

AsyncQueuer<TValue>

方法

addItem()

ts
addItem(
   item, 
   position, 
   runOnItemsChange): void
addItem(
   item, 
   position, 
   runOnItemsChange): void

定义于:async-queuer.ts:312

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

参数

item

TValue & object

position

QueuePosition = ...

runOnItemsChange

boolean = true

返回

void

示例

ts
queuer.addItem({ value: 'task', priority: 10 });
queuer.addItem('task2', 'front');
queuer.addItem({ value: 'task', priority: 10 });
queuer.addItem('task2', 'front');

clear()

ts
clear(): void
clear(): void

定义于:async-queuer.ts:282

从队列中删除所有待处理项目。不影响活动任务。

返回

void


execute()

ts
execute(position?): Promise<any>
execute(position?): Promise<any>

定义于:async-queuer.ts:410

从队列中删除��返回下一个项目,并使用它执行任务函数。

参数

position?

QueuePosition

返回

Promise<any>

示例

ts
queuer.execute();
// LIFO
queuer.execute('back');
queuer.execute();
// LIFO
queuer.execute('back');

getConcurrency()

ts
getConcurrency(): number
getConcurrency(): number

定义于:async-queuer.ts:215

返回当前处理项目的并发限制。 如果提供了一个函数,则使用队列器实例调用该函数。

返回

number


getErrorCount()

ts
getErrorCount(): number
getErrorCount(): number

定义于:async-queuer.ts:552

返回处理失败的项目数。

返回

number


getExpirationCount()

ts
getExpirationCount(): number
getExpirationCount(): number

定义于:async-queuer.ts:587

返回已过期并从队列中删除的项目数。

返回

number


getIsEmpty()

ts
getIsEmpty(): boolean
getIsEmpty(): boolean

定义于:async-queuer.ts:503

如果队列为空(没有待处理项目),则返回 true。

返回

boolean


getIsFull()

ts
getIsFull(): boolean
getIsFull(): boolean

定义于:async-queuer.ts:510

如果队列已满(达到 maxSize),则返回 true。

返回

boolean


getIsIdle()

ts
getIsIdle(): boolean
getIsIdle(): boolean

定义于:async-queuer.ts:580

如果队列器正在运行但没有要处理的项目并且没有活动任务,则返回 true。

返回

boolean


getIsRunning()

ts
getIsRunning(): boolean
getIsRunning(): boolean

定义于:async-queuer.ts:573

如果队列器当前正在运行(处理项目),则返回 true。

返回

boolean


getNextItem()

ts
getNextItem(position): undefined | TValue
getNextItem(position): undefined | TValue

定义于:async-queuer.ts:380

从队列中删除并返回下一个项目,而不执行任务函数。 用于手动队列管理。通常,使用 execute() 处理项目。

参数

position

QueuePosition = ...

返回

undefined | TValue

示例

ts
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');

getOptions()

ts
getOptions(): AsyncQueuerOptions<TValue>
getOptions(): AsyncQueuerOptions<TValue>

定义于:async-queuer.ts:199

返回当前队列器选项,包括默认值和任何覆盖。

返回

AsyncQueuerOptions<TValue>


getRejectionCount()

ts
getRejectionCount(): number
getRejectionCount(): number

定义于:async-queuer.ts:566

返回已从队列中拒绝添加的项目数。

返回

number


getSettledCount()

ts
getSettledCount(): number
getSettledCount(): number

定义于:async-queuer.ts:559

返回已完成处理(成功或错误)的项目数。

返回

number


getSize()

ts
getSize(): number
getSize(): number

定义于:async-queuer.ts:517

返回队列中待处理项目的数量。

返回

number


getSuccessCount()

ts
getSuccessCount(): number
getSuccessCount(): number

定义于:async-queuer.ts:545

返回已成功处理的项目数。

返回

number


getWait()

ts
getWait(): number
getWait(): number

定义于:async-queuer.ts:207

返回当前处理项目之间的等待时间(以毫秒为单位)。 如果提供了一个函数,则使用队列器实例调用该函数。

返回

number


peekActiveItems()

ts
peekActiveItems(): TValue[]
peekActiveItems(): TValue[]

定义于:async-queuer.ts:531

返回当前正在处理的项目(活动任务)。

返回

TValue[]


peekAllItems()

ts
peekAllItems(): TValue[]
peekAllItems(): TValue[]

定义于:async-queuer.ts:524

返回队列中所有项目的副本,包括活动项目和待处理项目。

返回

TValue[]


peekNextItem()

ts
peekNextItem(position): undefined | TValue
peekNextItem(position): undefined | TValue

定义于:async-queuer.ts:493

返回队列中的下一个项目,而不删除它。

参数

position

QueuePosition = 'front'

返回

undefined | TValue

示例

ts
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back

peekPendingItems()

ts
peekPendingItems(): TValue[]
peekPendingItems(): TValue[]

定义于:async-queuer.ts:538

返回等待处理的项目(待处理任务)。

返回

TValue[]


reset()

ts
reset(withInitialItems?): void
reset(withInitialItems?): void

定义于:async-queuer.ts:291

将队列器重置为其初始状态。可选地使用初始项目重新填充。 不影响回调或选项。

参数

withInitialItems?

boolean

返回

void


setOptions()

ts
setOptions(newOptions): void
setOptions(newOptions): void

定义于:async-queuer.ts:192

更新队列器选项。新选项将与现有选项合并。

参数

newOptions

Partial<AsyncQueuerOptions<TValue>>

返回

void


start()

ts
start(): void
start(): void

定义于:async-queuer.ts:261

开始处理队列中的项目。如果已在运行,则不执行任何操作。

返回

void


stop()

ts
stop(): void
stop(): void

定义于:async-queuer.ts:273

停止处理队列中的项目。不清除队列。

返回

void