https://github.com/filipchalupa/enqueue-task
https://github.com/filipchalupa/enqueue-task
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/filipchalupa/enqueue-task
- Owner: FilipChalupa
- Created: 2024-01-06T17:57:44.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-19T11:50:43.000Z (10 months ago)
- Last Synced: 2025-03-18T00:16:56.810Z (4 months ago)
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/enqueue-task
- Size: 667 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Enqueue task [](https://www.npmjs.com/package/enqueue-task)  [](https://jsr.io/@onset/enqueue-task)
Queue for your project.
## Installation
```bash
npm install enqueue-task
```## Usage
### Queue
```typescript
import { queue } from 'enqueue-task'const delay = (milliseconds: number) =>
new Promise((resolve) => setTimeout(resolve, milliseconds))const task1 = async () => {
await delay(5000)
console.log('Task 1')
}
const task2 = async () => {
await delay(3500)
console.log('Task 2')
}
const task3 = async () => {
await delay(4000)
console.log('Task 3')
}queue.enqueueTask(task1)
queue.enqueueTask(task2)
queue.enqueueTask(task3)
```#### Console output
```js
'Task 1' // After 5 seconds
'Task 2' // After 8.5 seconds
'Task 3' // After 12.5 seconds
```#### Custom queue
```typescript
import { createQueue } from 'enqueue-task'
const myQueue = createQueue()
```#### Return value
```typescript
const task4 = async () => {
await delay(1000)
return 3.14159265358979
}
const result4 = await queue.enqueueTask(task4)
console.log(result4) // 3.14159265358979
```### Group helper
```typescript
import { getQueueGroup } from 'enqueue-task'getQueueGroup('apples').enqueueTask(task1)
getQueueGroup('apples').enqueueTask(task2)
getQueueGroup('pears').enqueueTask(task3)
```#### Console output
```js
'Task 3' // After 4 seconds
'Task 1' // After 5 seconds
'Task 2' // After 8.5 seconds
```#### Custom get queue group
```typescript
import { createGetQueueGroup } from 'enqueue-task'
const myGetQueueGroup = createGetQueueGroup()
```### Dismiss pending tasks
All dismissed tasks will throw an instance of `DismissError`.
```typescript
queue.dismissPendingTasks()
```#### Tip: ignore dismiss errors
```typescript
queue.enqueueTask(task1).catch((error) => {
if (error instanceof DismissError) {
return
}
throw error
})
```### Development
See it in action:
```bash
npm ci
npm run build
npm test
```