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