定义于: queuer.ts:255
一个灵活的队列,可处理具有可配置等待时间、过期时间和优先级的项。
特性
运行行为
禁用自动处理时也支持手动处理
队列行为默认为 FIFO
优先级队列
堆栈 (LIFO)
双端队列
项过期
状态管理
用法示例
// Auto-processing queue with wait time
const autoQueue = new Queuer<number>((n) => console.log(n), {
started: true, // Begin processing immediately
wait: 1000, // Wait 1s between items
onExecute: (item, queuer) => console.log(`Processed ${item}`)
});
autoQueue.addItem(1); // Will process after 1s
autoQueue.addItem(2); // Will process 1s after first item
// Manual processing queue
const manualQueue = new Queuer<number>((n) => console.log(n), {
started: false
});
manualQueue.addItem(1); // [1]
manualQueue.addItem(2); // [1, 2]
manualQueue.execute(); // logs 1, queue is [2]
manualQueue.getNextItem(); // returns 2, queue is empty
// Auto-processing queue with wait time
const autoQueue = new Queuer<number>((n) => console.log(n), {
started: true, // Begin processing immediately
wait: 1000, // Wait 1s between items
onExecute: (item, queuer) => console.log(`Processed ${item}`)
});
autoQueue.addItem(1); // Will process after 1s
autoQueue.addItem(2); // Will process 1s after first item
// Manual processing queue
const manualQueue = new Queuer<number>((n) => console.log(n), {
started: false
});
manualQueue.addItem(1); // [1]
manualQueue.addItem(2); // [1, 2]
manualQueue.execute(); // logs 1, queue is [2]
manualQueue.getNextItem(); // returns 2, queue is empty
• TValue
new Queuer<TValue>(fn, initialOptions): Queuer<TValue>
new Queuer<TValue>(fn, initialOptions): Queuer<TValue>
定义于: queuer.ts:263
(item) => void
QueuerOptions<TValue> = {}
Queuer<TValue>
fn: (item) => void;
fn: (item) => void;
定义于: queuer.ts:264
TValue
void
key: string;
key: string;
定义于: queuer.ts:259
options: QueuerOptions<TValue>;
options: QueuerOptions<TValue>;
定义于: queuer.ts:260
readonly store: Store<Readonly<QueuerState<TValue>>>;
readonly store: Store<Readonly<QueuerState<TValue>>>;
定义于: queuer.ts:256
addItem(
item,
position,
runOnItemsChange): boolean
addItem(
item,
position,
runOnItemsChange): boolean
定义于: queuer.ts:384
将一个项目添加到队列。如果队列已满,该项目将被拒绝并调用 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:666
从队列中移除所有待处理的项。不影响正在处理的项。
void
execute(position?): undefined | TValue
execute(position?): undefined | TValue
定义于: queuer.ts:520
从队列中移除下一个项并返回它,然后使用提供的函数处理该项。
用法示例
queuer.execute();
// LIFO
queuer.execute('back');
queuer.execute();
// LIFO
queuer.execute('back');
undefined | TValue
flush(numberOfItems, position?): void
flush(numberOfItems, position?): void
定义于: queuer.ts:536
处理指定数量的项,立即执行,不等待。如果未提供 numberOfItems,则将处理所有项。
number = ...
void
flushAsBatch(batchFunction): void
flushAsBatch(batchFunction): void
定义于: queuer.ts:551
将队列中的所有项作为批次处理,并将提供的函数作为参数。处理后,队列将被清空。
(items) => void
void
getNextItem(position): undefined | TValue
getNextItem(position): undefined | TValue
定义于: queuer.ts:468
从队列中移除下一个项并返回它,而不执行函数。用于手动队列管理。通常,使用 execute() 来处理项。
用法示例
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
QueuePosition = ...
undefined | TValue
peekAllItems(): TValue[]
peekAllItems(): TValue[]
定义于: queuer.ts:634
返回队列中所有项的副本。
TValue[]
peekNextItem(position): undefined | TValue
peekNextItem(position): undefined | TValue
定义于: queuer.ts:624
返回队列中的下一个项,而不将其移除。
用法示例
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
QueuePosition = 'front'
undefined | TValue
reset(): void
reset(): void
定义于: queuer.ts:674
将队列重置为其默认值
void
setOptions(newOptions): void
setOptions(newOptions): void
定义于: queuer.ts:300
更新队列选项。新选项将与现有选项合并。
Partial<QueuerOptions<TValue>>
void
start(): void
start(): void
定义于: queuer.ts:641
启动队列中的项处理。如果已在运行,则不执行任何操作。
void
stop(): void
stop(): void
定义于: queuer.ts:651
停止队列中的项处理。不清除队列。
void
您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。