Defined in: queuer.ts:269
A flexible queue that processes items with configurable wait times, expiration, and priority.
This synchronous version is lighter weight and often all you need - upgrade to AsyncQueuer when you need promises, retry support, abort capabilities, concurrent execution, or advanced error handling.
Features:
Running behavior:
Manual processing is also supported when automatic processing is disabled:
Queue behavior defaults to FIFO:
Priority queue:
Stack (LIFO):
Double-ended queue:
Item expiration:
State Management:
Example usage:
// 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>;
Defined in: queuer.ts:277
(item) => void
QueuerOptions<TValue> = {}
Queuer<TValue>
fn: (item) => void;
fn: (item) => void;
Defined in: queuer.ts:278
TValue
void
key: string | undefined;
key: string | undefined;
Defined in: queuer.ts:273
options: QueuerOptions<TValue>;
options: QueuerOptions<TValue>;
Defined in: queuer.ts:274
readonly store: Store<Readonly<QueuerState<TValue>>>;
readonly store: Store<Readonly<QueuerState<TValue>>>;
Defined in: queuer.ts:270
addItem(
item,
position,
runOnItemsChange): boolean;
addItem(
item,
position,
runOnItemsChange): boolean;
Defined in: queuer.ts:401
Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration.
Returns true if the item was added, false if the queue is full.
Example usage:
queuer.addItem('task');
queuer.addItem('task2', 'front');
queuer.addItem('task');
queuer.addItem('task2', 'front');
TValue
QueuePosition = ...
boolean = true
boolean
clear(): void;
clear(): void;
Defined in: queuer.ts:683
Removes all pending items from the queue. Does not affect items being processed.
void
execute(position?): TValue | undefined;
execute(position?): TValue | undefined;
Defined in: queuer.ts:537
Removes and returns the next item from the queue and processes it using the provided function.
Example usage:
queuer.execute();
// LIFO
queuer.execute('back');
queuer.execute();
// LIFO
queuer.execute('back');
TValue | undefined
flush(numberOfItems, position?): void;
flush(numberOfItems, position?): void;
Defined in: queuer.ts:553
Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed
number = ...
void
flushAsBatch(batchFunction): void;
flushAsBatch(batchFunction): void;
Defined in: queuer.ts:568
Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing
(items) => void
void
getNextItem(position): TValue | undefined;
getNextItem(position): TValue | undefined;
Defined in: queuer.ts:485
Removes and returns the next item from the queue without executing the function. Use for manual queue management. Normally, use execute() to process items.
Example usage:
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
QueuePosition = ...
TValue | undefined
peekAllItems(): TValue[];
peekAllItems(): TValue[];
Defined in: queuer.ts:651
Returns a copy of all items in the queue.
TValue[]
peekNextItem(position): TValue | undefined;
peekNextItem(position): TValue | undefined;
Defined in: queuer.ts:641
Returns the next item in the queue without removing it.
Example usage:
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
QueuePosition = 'front'
TValue | undefined
reset(): void;
reset(): void;
Defined in: queuer.ts:691
Resets the queuer state to its default values
void
setOptions(newOptions): void;
setOptions(newOptions): void;
Defined in: queuer.ts:317
Updates the queuer options. New options are merged with existing options.
Partial<QueuerOptions<TValue>>
void
start(): void;
start(): void;
Defined in: queuer.ts:658
Starts processing items in the queue. If already isRunning, does nothing.
void
stop(): void;
stop(): void;
Defined in: queuer.ts:668
Stops processing items in the queue. Does not clear the queue.
void
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.
