unqueue
v2.0.13
Published
π Simple, zero-config, in-memory queue for async JS tasks
Downloads
12
Readme
π Unqueue
Unqueue is a simple, zero-config, in-memory queue for async JavaScript tasks. You can use it to sequentially run tasks that return promises, like sending emails or performing networking requests. It automatically retries failed promises too.
| | Status | | - | - | | Build | | | Health | | | PRs | |
βοΈ Features
- No configuration or databases required (in-memory)
- Automatically retry tasks if they fail
- First-class TypeScript and Node.js 14 support
- No dependencies
π» Getting started
Install from npm:
npm install unqueue
Create a new instance of the class and use the add
function:
import { Unqueue } from "unqueue";
const queue = new Unqueue();
queue.add(async () => {
// Async function that might throw an error
});
Optionally, you can add metadata for tasks:
// Example helper to fetch and write user details
const userIds = ["anand", "carlo"];
const get = async (userId: string) => {
const { data } = await axios.get(`https://example.com/users/${userId}`);
await fs.writeFile(`${userId}.json`, data);
};
// Error handler that logs the user ID from metadata
const queue = new Unqueue({
onError: ({ metadata, error }) =>
console.log(`Got an error in fetching ${metadata.userId}`, error),
});
userIds.forEach((id) => {
queue.add(() => get(id), { id });
});
You can configure the queue, these are the defaults:
const queue = new Unqueue({
maxAttempts: 3,
debug: false,
ttl: 3600,
onError: ({ task, error }) => console.log(`Error in ${task.name}`, error),
});