📏 Simple, zero-config, in-memory queue for async JS tasks
npm install unqueueUnqueue 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:
``bash`
npm install unqueue
Create a new instance of the class and use the add function:
`ts
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:
`tshttps://example.com/users/${userId}
// Example helper to fetch and write user details
const userIds = ["anand", "carlo"];
const get = async (userId: string) => {
const { data } = await axios.get();${userId}.json
await fs.writeFile(, 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:
`tsError in ${task.name}
const queue = new Unqueue({
maxAttempts: 3,
debug: false,
ttl: 3600,
onError: ({ task, error }) => console.log(, error),``
});
An open source project by Koj.
Furnish your home in style, for as low as CHF175/month →