Limit Promise Concurrency with pool

Metody jako Promise.all , Promise.allSettled , Promise.race a zbytek je opravdu vynikající pro správu více Promises, což našim aplikacím umožňuje využívat asynchronní a výkonné. Někdy však může být omezení počtu souběžných operací užitečné, například omezení rychlosti nebo prostě nechcete server vystavovat velkému stresu.

Zadejte jednoduchý nástroj pro omezení souběžnosti Promise:pool !

import pool from '@ricokahler/pool';

async function getQuotes() {
  const quotes = await pool({
    collection: [1, 2, 3, 4, 5],
    maxConcurrency: 2, // Limit 2 requests at a time
    task: async (symbol) => {
      const response = await fetch(`/quotes/${symbol}`);
      const json = await response.json();
      return json;
    },
  });

  console.log(quotes); // Array of the 5 quotes
}

pool umožňuje určit, kolik požadavků se má spustit současně. Pokud není zadána žádná hodnota souběžnosti, pool funguje jako Promise.all .

Souběžnost je důležitý problém s asynchronní povahou JavaScriptu, takže je důležité mít metodu pro jejich sdružování a omezení souběžných akcí.