Methods like Promise.all
, Promise.allSettled
, Promise.race
, and the rest are really excellent for managing multiple Promises, allowing for our apps to embrace async and performance. There are times, however, that limiting the number of concurrent operations may be useful, like rate limiting or simply not wanting to put a server under massive stress.
Enter an simple utility for limiting Promise concurrency: 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
lets you specify how many requests to run concurrently. If no concurrency value is provided, pool
acts like Promise.all
.
Concurrency is an important issue with JavaScript’s async nature, so having a method for pooling them together and limiting concurrent actions is important.
How to Create a RetroPie on Raspberry Pi – Graphical Guide
Today we get to play amazing games on our super powered game consoles, PCs, VR headsets, and even mobile devices. While I enjoy playing new games these days, I do long for the retro gaming systems I had when I was a kid: the original Nintendo…
fetch API
One of the worst kept secrets about AJAX on the web is that the underlying API for it,
XMLHttpRequest
, wasn’t really made for what we’ve been using it for. We’ve done well to create elegant APIs around XHR but we know we can do better. Our effort to…
Add Styles to Console Statements
I was recently checking out Google Plus because they implement some awesome effects. I opened the console and same the following message: WARNING! Using this console may allow attackers to impersonate you and steal your information using an attack called Self-XSS. Do not enter or paste code that you…