E3 — Promise Havuzu/Kuyruğu (Eşzamansız Eşzamanlılık)
Birçok eşzamansız görevi küçük bir eşzamanlılık sınırıyla çalıştırın. Kuyruk tutun, aynı anda birkaç görev başlatın ve sonuçları toplayın.
E3 — Promise Havuzu/Kuyruğu (Eşzamansız Eşzamanlılık), CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 3 dersten oluşur.
Ne ve neden?
Amaç: Sistemi aşırı yüklemeden birçok eşzamansız işi çalıştırın.
- Eşzamanlılığı sınırlayın (ör. aynı anda 2 iş)
- Basit bir kuyruk dizini tutun
- Sonuçları bir dizide saklayın
- Yeni başlayanlara uygun kod ve küçük yardımcı işlevler kullanın

Eşzamansız iş yardımcı işlevi
Küçük bir yardımcı işlev, bir gecikmeden sonra çözülen bir Promise döndürür; deneme amacıyla isteğe bağlı olarak başarısız olabilir.
// 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");
Havuz uygulaması
runPool birkaç çalışan başlatır; her biri sonraki görev dizinini alır ve görevi await ile bekler. Sonuçlar girdi sırasını korur.
// 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");
Havuzu çalıştırma
Aynı anda yürütülen iş sayısını 2 ile sınırlayın. Dizi sıralamayı korur: i dizini, i görev sonucunu tutar.
// 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);
})();
İsteğe bağlı yeniden deneme sarmalayıcısı
Bir görevi küçük bir withRetry yardımcı işleviyle sarın. Sayıları küçük, mantığı basit tutun.
// 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);
})();
Başlangıç düzeyi yönlendirme
İpuçları:
- Görevleri () => Promise işlevleri olarak saklayın.
- Kuyruk için ortak bir next dizini tutun.
- Her görev için try/catch kullanın ve sonuçları saklayın.
- Başlangıç düzeyindekiler için küçük bir sınır (2–4) seçin.

Eşzamanlılık sınırı temelleri sınavı
Hızlı kontrol: Neden havuz kullanılır?

Özet
Özet: Küçük bir Promise havuzu, görevleri sabit bir sınırla çalıştırır, sonuç dizisinde sırayı korur ve her görev için basit bir try/catch kullanır. Başlangıç düzeyi için harika bir kalıptır.

Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 59
- Dersler
- 200
Sıkça Sorulan Sorular
“E3 — Promise Havuzu/Kuyruğu (Eşzamansız Eşzamanlılık)” dersi ücretsiz mi?
Evet — “E3 — Promise Havuzu/Kuyruğu (Eşzamansız Eşzamanlılık)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 3 dersten oluşur.
“E3 — Promise Havuzu/Kuyruğu (Eşzamansız Eşzamanlılık)” dersinde ne öğreneceğim?
Birçok eşzamansız görevi küçük bir eşzamanlılık sınırıyla çalıştırın. Kuyruk tutun, aynı anda birkaç görev başlatın ve sonuçları toplayın. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.
“E3 — Promise Havuzu/Kuyruğu (Eşzamansız Eşzamanlılık)” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- E1 — İfade Değerlendirici (1. kısım: + ve - LTR)
- E2 — Günlük Çözümleyici (Basit Süzgeçler ve Sayaçlar)
- E3 — Promise Havuzu/Kuyruğu (Eşzamansız Eşzamanlılık)