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:399
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:681
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:535
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:551
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:566
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:483
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:649
Returns a copy of all items in the queue.
TValue[]
peekNextItem(position): TValue | undefined;
peekNextItem(position): TValue | undefined;
Defined in: queuer.ts:639
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:689
Resets the queuer state to its default values
void
setOptions(newOptions): void;
setOptions(newOptions): void;
Defined in: queuer.ts:315
Updates the queuer options. New options are merged with existing options.
Partial<QueuerOptions<TValue>>
void
start(): void;
start(): void;
Defined in: queuer.ts:656
Starts processing items in the queue. If already isRunning, does nothing.
void
stop(): void;
stop(): void;
Defined in: queuer.ts:666
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.
