Skip to content
JavaScript

Promise.all Concurrency Control

A Promise executor with concurrency limit.

By EZ4Code Team
promiseconcurrencyasync

Code

async function pool(tasks, limit) {
  const results = [];
  const executing = new Set();
  for (const task of tasks) {
    const p = Promise.resolve().then(() => task());
    results.push(p);
    executing.add(p);
    p.finally(() => executing.delete(p));
    if (executing.size >= limit) {
      await Promise.race(executing);
    }
  }
  return Promise.all(results);
}

Explanation

Controls maximum concurrency via Promise.race, suitable for batch request scenarios.

More JavaScript Snippets