Pola konkurensi (all/settled/race) dan tipenya
Modelkan konkurensi dengan Promise.all / allSettled / race, pahami tipe hasilnya, dan bangun pembantu yang aman.
Pola konkurensi (all/settled/race) dan tipenya adalah pelajaran TypeScript 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 TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 3 pelajaran total.
Pendahuluan
Tujuan: Jalankan tugas secara bersamaan dengan Promise.all, tangani hasil campuran melalui allSettled, dan gunakan race untuk batas waktu/cadangan. Pelajari tipe yang dikembalikan masing-masing.
all: tipe tupel
Promise.all dengan tupel mempertahankan tipe dan urutan elemen; setiap elemen dibuka hingga tipe di dalamnya.
async function one(): Promise<number> { return 1 }
async function two(): Promise<string> { return "two" }
async function runAll() {
const [a, b] = await Promise.all([one(), two()]);
// a: number, b: string
console.log(a + 1, b.toUpperCase());
}
runAll();all: pemetaan bersamaan
Mulai beberapa tugas terlebih dahulu, lalu await semuanya bersama-sama. Promise.all menghasilkan string[] di sini.
async function fetchItem(id: number): Promise<string> {
return `item-${id}`;
}
async function getMany(ids: number[]): Promise<string[]> {
const tasks = ids.map(id => fetchItem(id)); // start all
return Promise.all(tasks); // await all
}
getMany([1,2,3]).then(xs => console.log(xs));Pemberian tipe allSettled
allSettled tidak pernah menolak; metode ini menghasilkan larik objek hasil yang terpenuhi atau ditolak, yang dapat Anda persempit berdasarkan status.
async function mightFail(n: number): Promise<number> {
if (n % 2 === 0) return n; else throw new Error("odd")
}
async function runSettled() {
const results = await Promise.allSettled([mightFail(1), mightFail(2)]);
for (const r of results) {
if (r.status === "fulfilled") {
// r: PromiseFulfilledResult<number>
console.log("ok", r.value);
} else {
// r: PromiseRejectedResult
console.warn("fail", r.reason);
}
}
}
runSettled();race + batas waktu
race menyelesaikan atau menolak berdasarkan Promise yang selesai pertama. Gabungkan dengan batas waktu untuk membatasi latensi.
function timeout<T>(ms: number, msg = "Timeout"): Promise<T> {
return new Promise((_, reject) => setTimeout(() => reject(new Error(msg)), ms));
}
async function slow(): Promise<string> { return new Promise(res => setTimeout(() => res("done"), 100)); }
async function withTimeout() {
const result = await Promise.race<Promise<string>>([
slow(),
timeout<string>(50, "Too slow"),
]);
console.log(result);
}
withTimeout().catch(e => console.error("raced:", e.message));Kiat & pilihan
Kiat:
- all: pengumpulan hasil yang gagal dengan cepat.
- allSettled: kumpulkan keberhasilan dan kesalahan tanpa melempar.
- race: batas waktu/cadangan; nyatakan tipe elemen secara eksplisit.
Pemeriksaan tipe Promise.all
Pemeriksaan singkat: Pernyataan mana tentang pemberian tipe Promise.all yang TRUE?
Ringkasan
Ringkasan: Gunakan all untuk paralelisme bertipe, allSettled untuk memeriksa semua hasil, dan race untuk batas waktu—ketahui bentuk yang dikembalikan setiap API.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pola konkurensi (all/settled/race) dan tipenya” gratis?
Ya — teks lengkap “Pola konkurensi (all/settled/race) dan tipenya” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Pola konkurensi (all/settled/race) dan tipenya”?
Modelkan konkurensi dengan Promise.all / allSettled / race, pahami tipe hasilnya, dan bangun pembantu yang aman. Kamu berlatih TypeScript 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 TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript 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 “Pola konkurensi (all/settled/race) dan tipenya” 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 TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript 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
- Promise , pengetikan async/await
- Pengetikan kesalahan (unknown), penyempitan dalam catch
- Pola konkurensi (all/settled/race) dan tipenya