E3 — pula/kolejka Promise (asynchroniczna współbieżność)
Uruchamianie wielu zadań asynchronicznych z niewielkim limitem współbieżności. Utrzymywanie kolejki, uruchamianie kilku zadań naraz i zbieranie wyników
E3 — pula/kolejka Promise (asynchroniczna współbieżność) to bezpłatna lekcja JavaScript Academy na CoddyKit. To lekcja 3 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej JavaScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs JavaScript Academy zawiera 3 lekcji w sumie.
Co i dlaczego
Cel: uruchamiać wiele zadań async bez przeciążania systemu.
- Ograniczanie równoległości (np. 2 zadania naraz)
- Przechowywanie prostego indeksu kolejki
- Przechowywanie wyników w tablicy
- Kod przyjazny początkującym i małe funkcje pomocnicze

Pomocnicze zadanie async
Mała funkcja pomocnicza zwraca obiekt Promise, który zostaje rozstrzygnięty po opóźnieniu; opcjonalnie może zakończyć się niepowodzeniem na potrzeby testów.
// Simulate async work with setTimeout
function fakeJob(name, ms, fail) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
if (fail) {
reject(new Error("fail:" + name));
} else {
resolve("done:" + name);
}
}, ms);
});
}
console.log("demo job:", typeof fakeJob === "function");
Implementacja puli
runPool uruchamia kilku pracowników; każdy pobiera indeks następnego zadania i czeka na jego wykonanie. Wyniki zachowują kolejność danych wejściowych.
// Run tasks with a fixed concurrency limit
async function runPool(tasks, limit) {
// tasks: array of functions () => Promise<any>
const results = new Array(tasks.length);
let next = 0;
// worker runs tasks until none left
async function worker() {
while (true) {
const i = next;
if (i >= tasks.length) return;
next = next + 1;
try {
const value = await tasks[i]();
results[i] = { ok: true, value: value };
} catch (e) {
results[i] = { ok: false, error: String(e) };
}
}
}
// start up to limit workers
const workers = [];
for (let k = 0; k < limit; k = k + 1) {
workers.push(worker());
}
await Promise.all(workers);
return results;
}
console.log("pool ready:", typeof runPool === "function");
Uruchamianie puli
Należy ograniczyć liczbę aktywnych zadań do 2. Tablica zachowuje kolejność: indeks i zawiera wynik zadania i.
// Prepare simple tasks
const jobs = [
function () { return fakeJob("A", 300, false); },
function () { return fakeJob("B", 200, false); },
function () { return fakeJob("C", 150, true ); },
function () { return fakeJob("D", 100, false); }
];
// Run with concurrency = 2
(async function () {
const out = await runPool(jobs, 2);
console.log("results:", out);
})();
Opcjonalna otoczka ponawiania prób
Zadanie należy opakować za pomocą małej funkcji pomocniczej withRetry. Liczby powinny być małe, a logika prosta.
// Optional: add retry to a task wrapper (beginner-friendly)
function withRetry(task, attempts) {
return async function () {
let lastErr = null;
for (let i = 0; i < attempts; i = i + 1) {
try {
return await task();
} catch (e) {
lastErr = e;
}
}
throw lastErr;
};
}
const jobsWithRetry = [
withRetry(function () { return fakeJob("R1", 80, true); }, 2),
withRetry(function () { return fakeJob("R2", 60, false); }, 2)
];
(async function () {
const out = await runPool(jobsWithRetry, 1);
console.log("retry results:", out);
})();
Wskazówki dla początkujących
Wskazówki:
- Przechowuj zadania jako funkcje () => Promise.
- Zachowuj wspólny indeks następnego zadania dla kolejki.
- Używaj try/catch dla każdego zadania i zapisuj wyniki.
- Wybierz niewielki limit (2–4), odpowiedni dla początkujących.

Podstawy limitu współbieżności — quiz
Szybkie sprawdzenie: Po co używać puli?

Podsumowanie
Podsumowanie: Niewielka pula promise uruchamia zadania z ustalonym limitem, zachowuje ich kolejność w tablicy wyników i używa prostego try/catch dla każdego zadania. To świetny schemat dla początkujących.

Często zadawane pytania
Czy lekcja „E3 — pula/kolejka Promise (asynchroniczna współbieżność)” jest bezpłatna?
Tak — pełny tekst „E3 — pula/kolejka Promise (asynchroniczna współbieżność)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu JavaScript Academy, przejdź na CoddyKit PRO. Kurs JavaScript Academy zawiera 3 lekcji w sumie.
Co nauczysz się w „E3 — pula/kolejka Promise (asynchroniczna współbieżność)”?
Uruchamianie wielu zadań asynchronicznych z niewielkim limitem współbieżności. Utrzymywanie kolejki, uruchamianie kilku zadań naraz i zbieranie wyników Ćwiczysz JavaScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć JavaScript Academy?
Nie wymagamy żadnego doświadczenia. JavaScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 3.
Ile czasu zajmuje lekcja „E3 — pula/kolejka Promise (asynchroniczna współbieżność)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji JavaScript Academy?
Tak. Każda lekcja JavaScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- E1 — ewaluator wyrażeń (część 1: + i - od lewej do prawej)
- E2 — analizator logów (proste filtry i liczniki)
- E3 — pula/kolejka Promise (asynchroniczna współbieżność)