Eşzamanlılık kalıpları (all/settled/race) türleri
Promise.all / allSettled / race ile eşzamanlılığı modelleyin, sonuç türlerini anlayın ve güvenli yardımcılar oluşturun.
Eşzamanlılık kalıpları (all/settled/race) türleri, CoddyKit'te ücretsiz bir TypeScript 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, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 3 dersten oluşur.
Giriş
Amaç: Görevleri Promise.all ile eşzamanlı çalıştırmak, farklı sonuçları allSettled üzerinden ele almak ve zaman aşımı/geri dönüşler için race kullanmak. Her birinin döndürdüğü türleri öğrenin.
all: demet türleri
Bir demet ile kullanılan Promise.all, öğe türlerini ve sıralarını korur; her öğe kendi iç türüne await edilir.
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: eşzamanlı map
Önce birden çok görevi başlatın, ardından hepsini birlikte await edin. Promise.all burada string[] verir.
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));allSettled türleri
allSettled hiçbir zaman reddedilmez; status üzerinden türünü daraltabileceğiniz tamamlanmış veya reddedilmiş sonuç nesnelerinden oluşan bir diziye çözülür.
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 + zaman aşımı
race, sonuçlanan Promise'lar arasındaki ilk Promise ile çözülür veya reddedilir. Gecikmeyi sınırlamak için bunu bir zaman aşımıyla birleştirin.
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));İpuçları ve seçimler
İpuçları:
- all: sonuçları ilk hatada duran bir işlemle toplar.
- allSettled: fırlatma olmadan başarıları ve hataları toplar.
- race: zaman aşımları/geri dönüşler için kullanılır; öğe türlerini açıkça belirtin.
Promise.all türü denetimi
Hızlı denetim: Promise.all türleri hakkında hangi ifade TRUE'dur?
Özet
Özet: Tür güvenli paralellik için all, tüm sonuçları incelemek için allSettled ve zaman aşımları için race kullanın—her API'nin döndürdüğü yapıları bilin.
Sıkça Sorulan Sorular
“Eşzamanlılık kalıpları (all/settled/race) türleri” dersi ücretsiz mi?
Evet — “Eşzamanlılık kalıpları (all/settled/race) türleri” 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 TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 3 dersten oluşur.
“Eşzamanlılık kalıpları (all/settled/race) türleri” dersinde ne öğreneceğim?
Promise.all / allSettled / race ile eşzamanlılığı modelleyin, sonuç türlerini anlayın ve güvenli yardımcılar oluşturun. TypeScript 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.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript 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.
“Eşzamanlılık kalıpları (all/settled/race) türleri” 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 TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript 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
- Promise , async/await türleri
- Hata türleri (unknown), catch içinde daraltma
- Eşzamanlılık kalıpları (all/settled/race) türleri