定义于: async-queuer.ts:271
一个灵活的异步队列,用于处理具有可配置并发、优先级和过期的任务。
特性
任务的处理并发度最高可达配置的并发限制。当任务完成时,如果并发限制允许,则处理下一个待处理的任务。
错误处理
状态管理
用法示例
const asyncQueuer = new AsyncQueuer<string>(async (item) => {
// process item
return item.toUpperCase();
}, {
concurrency: 2,
onSuccess: (result) => {
console.log(result);
}
});
asyncQueuer.addItem('hello');
asyncQueuer.start();
const asyncQueuer = new AsyncQueuer<string>(async (item) => {
// process item
return item.toUpperCase();
}, {
concurrency: 2,
onSuccess: (result) => {
console.log(result);
}
});
asyncQueuer.addItem('hello');
asyncQueuer.start();
• TValue
new AsyncQueuer<TValue>(fn, initialOptions): AsyncQueuer<TValue>
new AsyncQueuer<TValue>(fn, initialOptions): AsyncQueuer<TValue>
定义于: async-queuer.ts:279
(item) => Promise<any>
AsyncQueuerOptions<TValue> = {}
AsyncQueuer<TValue>
fn: (item) => Promise<any>;
fn: (item) => Promise<any>;
定义于: async-queuer.ts:280
TValue
Promise<any>
key: string;
key: string;
定义于: async-queuer.ts:275
options: AsyncQueuerOptions<TValue>;
options: AsyncQueuerOptions<TValue>;
定义于: async-queuer.ts:276
readonly store: Store<Readonly<AsyncQueuerState<TValue>>>;
readonly store: Store<Readonly<AsyncQueuerState<TValue>>>;
定义于: async-queuer.ts:272
addItem(
item,
position,
runOnItemsChange): boolean
addItem(
item,
position,
runOnItemsChange): boolean
定义于: async-queuer.ts:421
将一个项目添加到队列。如果队列已满,该项目将被拒绝并调用 onReject。项目可以根据优先级插入,或者根据配置插入到队列的前面/后面。
TValue
QueuePosition = ...
boolean = true
boolean
queuer.addItem({ value: 'task', priority: 10 });
queuer.addItem('task2', 'front');
queuer.addItem({ value: 'task', priority: 10 });
queuer.addItem('task2', 'front');
clear(): void
clear(): void
定义于: async-queuer.ts:734
移除队列中的所有待处理项目。不影响活动任务。
void
execute(position?): Promise<any>
execute(position?): Promise<any>
定义于: async-queuer.ts:556
从队列中移除并返回下一个项目,并用其执行任务函数。
Promise<any>
queuer.execute();
// LIFO
queuer.execute('back');
queuer.execute();
// LIFO
queuer.execute('back');
flush(numberOfItems, position?): Promise<void>
flush(numberOfItems, position?): Promise<void>
定义于: async-queuer.ts:591
立即处理指定数量的项目,无需等待。如果未提供 numberOfItems,则处理所有项目。
number = ...
Promise<void>
flushAsBatch(batchFunction): Promise<void>
flushAsBatch(batchFunction): Promise<void>
定义于: async-queuer.ts:605
使用提供的函数作为参数,将队列中的所有项目作为批次进行处理。处理后队列将被清空。
(items) => Promise<any>
Promise<void>
getNextItem(position): undefined | TValue
getNextItem(position): undefined | TValue
定义于: async-queuer.ts:504
从队列中移除并返回下一个项目,而不执行任务函数。用于手动队列管理。通常,应使用 execute() 来处理项目。
QueuePosition = ...
undefined | TValue
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
peekActiveItems(): TValue[]
peekActiveItems(): TValue[]
定义于: async-queuer.ts:697
返回当前正在处理的项目(活动任务)。
TValue[]
peekAllItems(): TValue[]
peekAllItems(): TValue[]
定义于: async-queuer.ts:690
返回队列中的所有项目副本,包括活动项目和待处理项目。
TValue[]
peekNextItem(position): undefined | TValue
peekNextItem(position): undefined | TValue
定义于: async-queuer.ts:680
在不移除的情况下返回队列中的下一个项目。
QueuePosition = 'front'
undefined | TValue
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
peekPendingItems(): TValue[]
peekPendingItems(): TValue[]
定义于: async-queuer.ts:704
返回等待处理的项目(待处理任务)。
TValue[]
reset(): void
reset(): void
定义于: async-queuer.ts:742
将队列器状态重置为默认值
void
setOptions(newOptions): void
setOptions(newOptions): void
定义于: async-queuer.ts:318
更新队列器的选项。新选项将与现有选项合并。
Partial<AsyncQueuerOptions<TValue>>
void
start(): void
start(): void
定义于: async-queuer.ts:711
开始处理队列中的项目。如果已在运行,则不执行任何操作。
void
stop(): void
stop(): void
定义于: async-queuer.ts:721
停止处理队列中的项目。不清除队列。
void
您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。