JavaScript
JavaScript Async Promises Utilities
JavaScript Async Helpers - Promise Utilities
Useful async/await helper functions for handling promises, retries, timeouts, and concurrent operations.
Helper functions for working with async operations in JavaScript.
Retry Function
async function retry(fn, retries = 3, delay = 1000) {
for (let i = 0; i < retries; i++) {
try {
return await fn();
} catch (error) {
if (i === retries - 1) throw error;
await new Promise(resolve => setTimeout(resolve, delay * (i + 1)));
}
}
}
// Usage
const data = await retry(() => fetch('/api/data').then(r => r.json()));
Timeout Wrapper
function withTimeout(promise, ms) {
return Promise.race([
promise,
new Promise((_, reject) =>
setTimeout(() => reject(new Error('Timeout')), ms)
),
]);
}
// Usage
const data = await withTimeout(
fetch('/api/data').then(r => r.json()),
5000
);
Parallel with Limit
async function parallelLimit(items, limit, fn) {
const results = [];
for (let i = 0; i < items.length; i += limit) {
const batch = items.slice(i, i + limit);
const batchResults = await Promise.all(batch.map(fn));
results.push(...batchResults);
}
return results;
}
// Usage
const results = await parallelLimit(urls, 5, url => fetch(url));
Safe Async
async function safeAsync(promise) {
try {
const data = await promise;
return { data, error: null };
} catch (error) {
return { data: null, error };
}
}
// Usage
const { data, error } = await safeAsync(fetch('/api/data'));
Features
- Error handling
- Performance optimization
- Flexible configuration
- Production-ready