async let, Task ve iptal
İşleri async let ile paralel çalıştırın, bağımsız Task nesneleri oluşturun ve iptali işbirlikçi biçimde yönetin.
async let, Task ve iptal, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 2. 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, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 3 dersten oluşur.
Ele alacaklarımız
Şunları yapacaksınız:
- async let ile kardeş işleri başlatmak
- Task { } aracılığıyla bağımsız birimler başlatmak
- İşbirlikçi denetimler kullanarak iptale yanıt vermek
async let temelleri
async let, aynı kapsam içinde alt görevleri paralel olarak başlatır; kapsamdan çıkmadan önce await etmeniz gerekir.
func loadA() async -> Int { try? await Task.sleep(nanoseconds: 200_000_000); return 1 }
func loadB() async -> Int { try? await Task.sleep(nanoseconds: 200_000_000); return 2 }
Task {
async let a = loadA()
async let b = loadB()
// Both start immediately; awaiting joins them
let sum = await (a + b)
print("sum =", sum) // 3
}Bağımsız Task
Bağımsız bir görev başlatmak için Task {} kullanın, ardından sonucunu almak için await t.value kullanın.
// Create an independent task (not tied to current scope)
func fetchMessage() async -> String {
try? await Task.sleep(nanoseconds: 150_000_000)
return "hello"
}
let t = Task { await fetchMessage() }
Task {
print("from Task:", await t.value) // waits for the independent task's result
}İptalin temelleri
İptal işbirlikçidir. Task.checkCancellation() ile denetleyin (hata fırlatır) veya Task.isCancelled değerini okuyup erken dönün.
// A long-running job that checks for cancellation
enum WorkError: Error { case cancelled }
func longJob() async throws -> Int {
var total = 0
for i in 1...10 {
try Task.checkCancellation() // throws CancellationError if cancelled
try? await Task.sleep(nanoseconds: 50_000_000)
total += i
}
return total
}
let job = Task { try await longJob() }
Task {
// Cancel after a short delay
try? await Task.sleep(nanoseconds: 120_000_000)
job.cancel()
do {
_ = try await job.value
} catch {
print("job cancelled") // expected
}
}Üst görevden → alt görevlere iptal
Üst görev iptal edildiğinde alt görevler bunu algılar ve bir denetimden sonra hızla çıkmalıdır.
// Propagate cancellation from parent to children using async let
func part(_ id: Int) async throws -> String {
try Task.checkCancellation()
try? await Task.sleep(nanoseconds: 80_000_000)
return "P\(id)"
}
Task {
do {
async let p1 = part(1)
async let p2 = part(2)
// Cancel the whole operation before awaiting
Task.currentTask?.cancel() // cancel self -> children see cancellation
let out = try await [p1, p2].joined(separator: ",")
print(out)
} catch {
print("parent cancelled; children stopped")
}
}Yönergeler
İpuçları:
- Kardeş görevler için async let kullanın; aynı kapsamda onları her zaman await edin.
task.cancel()ile iptal edin ve işin içindeTask.checkCancellation()çağırın.- Küçük eşzamansız işlevleri tercih edin: bunları iptal etmek ve test etmek kolaydır.
İşbirlikçi iptal davranışı
Hızlı kontrol: Uzun süren eşzamansız kod ipale nasıl yanıt vermelidir?
Özet
Özet: Kardeş görevleri async let ile başlatın, bağımsız işleri Task {} içinde başlatın ve düzenli olarak denetleyip hızla çıkarak işbirlikçi iptali uygulayın.
Sıkça Sorulan Sorular
“async let, Task ve iptal” dersi ücretsiz mi?
Evet — “async let, Task ve iptal” 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 Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 3 dersten oluşur.
“async let, Task ve iptal” dersinde ne öğreneceğim?
İşleri async let ile paralel çalıştırın, bağımsız Task nesneleri oluşturun ve iptali işbirlikçi biçimde yönetin. Swift 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.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift 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 2. dersidir.
“async let, Task ve iptal” 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 Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift 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
- Yapılandırılmış eşzamanlılık ve async işlevler
- async let, Task ve iptal
- try await ve hata yayılımı