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 |
- No configuration or databases required (in-memory)
- Automatically retry tasks if they fail
- First-class TypeScript and Node.js 14 support
- No dependencies
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),
});
An open source project by Koj.
Furnish your home in style, for as low as CHF175/month β