0Pricing
JavaScript Academy · Pelajaran

E3 — Kumpulan/Antrean Promise (Konkurensi async)

Jalankan banyak tugas async dengan batas konkurensi kecil. Kelola antrean, mulai beberapa tugas sekaligus, dan kumpulkan hasilnya

E3 — Kumpulan/Antrean Promise (Konkurensi async) adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 3 pelajaran total.

Apa dan mengapa

Tujuan: Jalankan banyak pekerjaan asinkron tanpa membanjiri sistem.

  • Batasi konkurensi, misalnya 2 sekaligus
  • Pertahankan indeks antrean sederhana
  • Simpan hasil dalam larik
  • Gunakan kode yang ramah bagi pemula dan pembantu kecil
E3 — Kumpulan/Antrean Promise (Konkurensi async) — ilustrasi 1

Pembantu pekerjaan asinkron

Pembantu kecil mengembalikan Promise yang selesai setelah jeda; pembantu ini juga dapat gagal saat pengujian.

// 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");
E3 — Kumpulan/Antrean Promise (Konkurensi async) — ilustrasi 2

Implementasi kumpulan

runPool memulai beberapa workers; masing-masing mengambil indeks tugas berikutnya dan menunggunya. Hasil tetap mengikuti urutan input.

// 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");
E3 — Kumpulan/Antrean Promise (Konkurensi async) — ilustrasi 3

Jalankan kumpulan

Batasi hingga 2 pekerjaan yang sedang berjalan. Larik mempertahankan urutan: indeks i menyimpan hasil tugas 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);
})();
E3 — Kumpulan/Antrean Promise (Konkurensi async) — ilustrasi 4

Pembungkus percobaan ulang opsional

Bungkus tugas dengan pembantu withRetry kecil. Gunakan angka kecil dan logika sederhana.

// 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);
})();
E3 — Kumpulan/Antrean Promise (Konkurensi async) — ilustrasi 5

Panduan untuk Pemula

Kiat:

  • Simpan tugas sebagai fungsi () => janji.
  • Pertahankan indeks next bersama untuk antrean.
  • Gunakan coba/tangkap untuk setiap tugas dan simpan hasilnya.
  • Pilih batas kecil (2–4) untuk pemula.
E3 — Kumpulan/Antrean Promise (Konkurensi async) — ilustrasi 6

Kuis Dasar Batas Konkurensi

Pemeriksaan singkat: Mengapa menggunakan kumpulan?

E3 — Kumpulan/Antrean Promise (Konkurensi async) — ilustrasi 7

Rangkuman

Rangkuman: Kumpulan janji kecil menjalankan tugas dengan batas tetap, mempertahankan urutan dalam larik hasil, dan menggunakan coba/tangkap sederhana untuk setiap tugas. Pola yang bagus untuk pemula.

E3 — Kumpulan/Antrean Promise (Konkurensi async) — ilustrasi 8

Pertanyaan yang Sering Diajukan

Apakah pelajaran “E3 — Kumpulan/Antrean Promise (Konkurensi async)” gratis?

Ya — teks lengkap “E3 — Kumpulan/Antrean Promise (Konkurensi async)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “E3 — Kumpulan/Antrean Promise (Konkurensi async)”?

Jalankan banyak tugas async dengan batas konkurensi kecil. Kelola antrean, mulai beberapa tugas sekaligus, dan kumpulkan hasilnya Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai JavaScript Academy?

Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “E3 — Kumpulan/Antrean Promise (Konkurensi async)” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?

Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. E1 — Evaluator Ekspresi (bagian 1: + dan - LTR)
  2. E2 — Penganalisis Log (Filter dan Penghitung Sederhana)
  3. E3 — Kumpulan/Antrean Promise (Konkurensi async)
← Kembali ke JavaScript Academy