0Pricing
Swift Academy · Lektion

async let, Task und Abbruch

Führen Sie Arbeiten mit async let parallel aus, erstellen Sie unabhängige Task s und behandeln Sie cancellation kooperativ.

async let, Task und Abbruch ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.

Was Sie lernen

Sie werden:

  • gleichgeordnete Arbeit mit async let starten
  • unabhängige Einheiten mit Task { } starten
  • auf Abbruch mit kooperativen Prüfungen reagieren

Grundlagen von async let

async let startet untergeordnete Tasks parallel im selben Gültigkeitsbereich; vor dem Verlassen dieses Gültigkeitsbereichs müssen Sie await verwenden.

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
}

Unabhängiger Task

Verwenden Sie Task {}, um einen unabhängigen Task zu starten, und rufen Sie später await t.value auf, um sein Ergebnis abzurufen.

// 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
}

Grundlagen des Abbruchs

Der Abbruch erfolgt kooperativ. Prüfen Sie ihn mit Task.checkCancellation() (löst einen Fehler aus) oder lesen Sie Task.isCancelled und kehren Sie vorzeitig zurück.

// 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
    }
}

Eltern-Task → Abbruch der Kinder

Wenn der übergeordnete Task abgebrochen wird, erkennen die untergeordneten Tasks dies und sollten nach einer entsprechenden Prüfung schnell beendet werden.

// 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")
    }
}

Richtlinien

Tipps:

  • Verwenden Sie async let für gleichgeordnete Tasks und warten Sie immer im selben Gültigkeitsbereich auf sie.
  • Brechen Sie mit task.cancel() ab und rufen Sie innerhalb der Arbeit Task.checkCancellation() auf.
  • Bevorzugen Sie kleine asynchrone Funktionen: Sie lassen sich leicht abbrechen und testen.

Verhalten bei kooperativem Abbruch

Kurztest: Wie sollte lang laufender asynchroner Code auf einen Abbruch reagieren?

Zusammenfassung

Zusammenfassung: Starten Sie gleichgeordnete Tasks mit async let, unabhängige Arbeit mit Task {} und implementieren Sie einen kooperativen Abbruch, indem Sie den Abbruch prüfen und die Ausführung zügig beenden.

Häufig gestellte Fragen

Ist die Lektion „async let, Task und Abbruch“ kostenlos?

Ja — der vollständige Text von „async let, Task und Abbruch“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „async let, Task und Abbruch“?

Führen Sie Arbeiten mit async let parallel aus, erstellen Sie unabhängige Task s und behandeln Sie cancellation kooperativ. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 3.

Wie lange dauert die Lektion „async let, Task und Abbruch“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Strukturierte Nebenläufigkeit, asynchrone Funktionen
  2. async let, Task und Abbruch
  3. try await und Fehlerweitergabe
← Zurück zu Swift Academy