定义于:queuer.ts:160
一个灵活的队列,用于处理具有可配置等待时间、过期时间和优先级的项目。
特性:
运行行为:
禁用自动处理时也支持手动处理:
队列行为默认为 FIFO:
优先级队列:
堆栈 (LIFO):
双端队列:
项目过期:
示例用法:
// 具有等待时间的自动处理队列
const autoQueue = new Queuer<number>((n) => console.log(n), {
started: true, // 立即开始处理
wait: 1000, // 项目之间等待 1 秒
onExecute: (item) => console.log(`已处理 ${item}`)
});
autoQueue.addItem(1); // 将在 1 秒后处理
autoQueue.addItem(2); // 将在第一个项目后 1 秒处理
// 手动处理队列
const manualQueue = new Queuer<number>((n) => console.log(n), {
started: false
});
manualQueue.addItem(1); // [1]
manualQueue.addItem(2); // [1, 2]
manualQueue.execute(); // 输出 1,队列为 [2]
manualQueue.getNextItem(); // 返回 2,队列为空
// 具有等待时间的自动处理队列
const autoQueue = new Queuer<number>((n) => console.log(n), {
started: true, // 立即开始处理
wait: 1000, // 项目之间等待 1 秒
onExecute: (item) => console.log(`已处理 ${item}`)
});
autoQueue.addItem(1); // 将在 1 秒后处理
autoQueue.addItem(2); // 将在第一个项目后 1 秒处理
// 手动处理队列
const manualQueue = new Queuer<number>((n) => console.log(n), {
started: false
});
manualQueue.addItem(1); // [1]
manualQueue.addItem(2); // [1, 2]
manualQueue.execute(); // 输出 1,队列为 [2]
manualQueue.getNextItem(); // 返回 2,队列为空
• TValue
new Queuer<TValue>(fn, initialOptions): Queuer<TValue>
new Queuer<TValue>(fn, initialOptions): Queuer<TValue>
定义于:queuer.ts:171
(item) => void
QueuerOptions<TValue> = {}
Queuer<TValue>
addItem(
item,
position,
runOnUpdate): boolean
addItem(
item,
position,
runOnUpdate): boolean
定义于:queuer.ts:343
将项目添加到队列。如果队列已满,则拒绝该项目并调用 onReject。 可以根据优先级或根据配置在前面/后面插入项目。
如果项目已添加,则返回 true;如果队列已满,则返回 false。
示例用法:
queuer.addItem('task');
queuer.addItem('task2', 'front');
queuer.addItem('task');
queuer.addItem('task2', 'front');
TValue
QueuePosition = ...
boolean = true
boolean
clear(): void
clear(): void
定义于:queuer.ts:313
从队列中删除所有待处理项目。不影响正在处理的项目。
void
execute(position?): undefined | TValue
execute(position?): undefined | TValue
定义于:queuer.ts:431
从队列中删除并返回下一个项目,并使用提供的函数对其进行处理。
示例用法:
queuer.execute();
// LIFO
queuer.execute('back');
queuer.execute();
// LIFO
queuer.execute('back');
undefined | TValue
getExecutionCount(): number
getExecutionCount(): number
定义于:queuer.ts:490
返回已处理并从队列中删除的项目数。
number
getExpirationCount(): number
getExpirationCount(): number
定义于:queuer.ts:504
返回已过期并从队列中删除的项目数。
number
getIsEmpty(): boolean
getIsEmpty(): boolean
定义于:queuer.ts:462
如果队列为空(没有待处理项目),则返回 true。
boolean
getIsFull(): boolean
getIsFull(): boolean
定义于:queuer.ts:469
如果队列已满(达到 maxSize),则返回 true。
boolean
getIsIdle(): boolean
getIsIdle(): boolean
定义于:queuer.ts:518
如果队列器正在运行但没有要处理的项目,则返回 true。
boolean
getIsRunning(): boolean
getIsRunning(): boolean
定义于:queuer.ts:511
如果队列器当前正在运行(处理项目),则返回 true。
boolean
getNextItem(position): undefined | TValue
getNextItem(position): undefined | TValue
定义于:queuer.ts:401
从队列中删除并返回下一个项目,而不执行该函数。 用于手动队列管理。通常,使用 execute() 处理项目。
示例用法:
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
QueuePosition = ...
undefined | TValue
getOptions(): Required<QueuerOptions<TValue>>
getOptions(): Required<QueuerOptions<TValue>>
定义于:queuer.ts:195
返回当前队列器选项,包括默认值和任何覆盖。
Required<QueuerOptions<TValue>>
getRejectionCount(): number
getRejectionCount(): number
定义于:queuer.ts:497
返回已从队列中拒绝添加的项目数。
number
getSize(): number
getSize(): number
定义于:queuer.ts:476
返回队列中待处理项目的数量。
number
getWait(): number
getWait(): number
定义于:queuer.ts:203
返回当前处理项目之间的等待时间(以毫秒为单位)。 如果提供了一个函数,则使用队列器实例调用该函数。
number
peekAllItems(): TValue[]
peekAllItems(): TValue[]
定义于:queuer.ts:483
返回队列中所有项目的副本。
TValue[]
peekNextItem(position): undefined | TValue
peekNextItem(position): undefined | TValue
定义于:queuer.ts:450
返回队列中的下一个项目,而不删除它。
示例用法:
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
QueuePosition = ...
undefined | TValue
reset(withInitialItems?): void
reset(withInitialItems?): void
定义于:queuer.ts:322
将队列器重置为其初始状态。可选地使用初始项目重新填充。 不影响回调或选项。
boolean
void
setOptions(newOptions): void
setOptions(newOptions): void
定义于:queuer.ts:188
更新队列器选项。新选项将与现有选项合并。
Partial<QueuerOptions<TValue>>
void
start(): void
start(): void
定义于:queuer.ts:301
开始处理队列中的项目。如果已在运行,则不执行任何操作。
void
stop(): void
stop(): void
定义于:queuer.ts:292
停止处理队列中的项目。不清除队列。
void