60 lines
1.1 KiB
Markdown
60 lines
1.1 KiB
Markdown
# Task Queue
|
|
|
|
The `TaskQueue` class provides a simple queue processing system with batched operations and throttling. It's designed to handle asynchronous operations efficiently while maintaining control over processing rates and resource usage.
|
|
|
|
## Basic Usage
|
|
|
|
```typescript
|
|
// Create queue for processing messages
|
|
const queue = new TaskQueue<number>({
|
|
chunkSize: 10,
|
|
processItem: (n: number) => console.log(n)
|
|
})
|
|
|
|
// Add and remove items to/from queue
|
|
worker.push(10)
|
|
worker.push(21)
|
|
worker.remove(10)
|
|
worker.push(57)
|
|
```
|
|
|
|
## Control Methods
|
|
|
|
Control message processing:
|
|
|
|
```typescript
|
|
// Pause processing
|
|
worker.stop()
|
|
|
|
// Resume processing
|
|
worker.start()
|
|
|
|
// Clear queue
|
|
worker.clear()
|
|
```
|
|
|
|
## API Reference
|
|
|
|
### Constructor
|
|
|
|
```typescript
|
|
class TaskQueue<Item> {
|
|
constructor(readonly options: TaskQueueOptions<Item>) {}
|
|
}
|
|
```
|
|
|
|
The TaskQueue class accepts messages of type `Item` and processes them.
|
|
|
|
### Configuration
|
|
|
|
```typescript
|
|
type TaskQueueOptions<Item> = {
|
|
// How many items to process at a time
|
|
batchSize: number
|
|
|
|
// A function for processing items. Any promises returned will be awaited
|
|
processItem: (item: Item) => unknown
|
|
}
|
|
```
|
|
|