E3 — Kumpulan/Baris Gilir Promise (keserentakan async)
Jalankan banyak tugas async dengan had keserentakan kecil. Kekalkan baris gilir, mulakan beberapa tugas pada satu-satu masa dan kumpulkan hasil.
E3 — Kumpulan/Baris Gilir Promise (keserentakan async) ialah pelajaran Akademi JavaScript percuma di CoddyKit. Ini ialah pelajaran 3 daripada 3. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi JavaScript, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi JavaScript merangkumi sejumlah 3 pelajaran.
Apa dan sebabnya
Matlamat: Jalankan banyak tugas tak segerak tanpa membebankan sistem.
- Hadkan keserentakan (contohnya, 2 pada satu masa)
- Simpan indeks baris gilir yang mudah
- Simpan hasil dalam tatasusunan
- Kod mesra pemula dengan pembantu kecil

Pembantu tugas tak segerak
Pembantu kecil mengembalikan Promise yang diselesaikan selepas kelewatan; ia juga boleh gagal untuk 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");
Pelaksanaan kumpulan
runPool memulakan beberapa pekerja; setiap pekerja mengambil indeks tugas seterusnya dan menunggunya. Hasil mengekalkan susunan masukan.
// 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");
Jalankan kumpulan
Hadkan kepada 2 tugas yang sedang berjalan. Tatasusunan mengekalkan susunan: 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);
})();
Pembalut percubaan semula pilihan
Bungkus tugas dengan pembantu withRetry yang kecil. Pastikan nombor kecil dan logik mudah.
// 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);
})();
Panduan untuk pemula
Petua:
- Simpan tugas sebagai fungsi () => janji.
- Kekalkan indeks next yang dikongsi untuk baris gilir.
- Gunakan cuba/tangkap bagi setiap tugas dan simpan hasilnya.
- Pilih had kecil (2–4) untuk pemula.

Kuiz asas had keserentakan
Semakan ringkas: Mengapa menggunakan kumpulan?

Ringkasan
Ringkasan: Kumpulan janji kecil menjalankan tugas dengan had tetap, mengekalkan susunan dalam tatasusunan hasil, dan menggunakan cuba/tangkap yang mudah untuk setiap tugas. Corak yang sangat baik untuk pemula.

Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 59
- Pelajaran
- 200
Soalan Lazim
Adakah pelajaran “E3 — Kumpulan/Baris Gilir Promise (keserentakan async)” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Akademi JavaScript, termasuk “E3 — Kumpulan/Baris Gilir Promise (keserentakan async)”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Akademi JavaScript merangkumi sejumlah 3 pelajaran.
Apakah yang akan saya pelajari dalam “E3 — Kumpulan/Baris Gilir Promise (keserentakan async)”?
Jalankan banyak tugas async dengan had keserentakan kecil. Kekalkan baris gilir, mulakan beberapa tugas pada satu-satu masa dan kumpulkan hasil. Anda berlatih Akademi JavaScript menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi JavaScript?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi JavaScript di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 3.
Berapa lamakah pelajaran “E3 — Kumpulan/Baris Gilir Promise (keserentakan async)” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi JavaScript ini?
Ya. Setiap pelajaran Akademi JavaScript menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- E1 — Penilai Ungkapan (bahagian 1: + dan - LTR)
- E2 — Penganalisis Log (penapis dan pembilang mudah)
- E3 — Kumpulan/Baris Gilir Promise (keserentakan async)