0Pricing
Swift Academy · Lekcja

Współbieżność strukturalna i funkcje asynchroniczne

Definiuj funkcje async , wywołuj je za pomocą await i poznaj współbieżność strukturalną : zadania potomne kończą się przed wyjściem z zakresu rodzica.

Współbieżność strukturalna i funkcje asynchroniczne to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 3 lekcji w sumie.

Po co async/await

async/await pozwala pisać kod asynchroniczny, który wygląda jak kod synchroniczny. Dzięki współbieżności strukturalnej zadania podrzędne są powiązane z czasem życia zakresu, więc nie dochodzi do wycieków.

Pierwsza funkcja async

Funkcja async może używać await do oczekiwania na inną pracę asynchroniczną. Utwórz obiekt Task w skryptach lub playgroundach, aby ją wywołać.

// Simulate a short async delay, then return a value
func fetchNumber() async -> Int {
    try? await Task.sleep(nanoseconds: 200_000_000) // ~200ms
    return 42
}

// Call sites must use "await" from an async context or a Task
Task {
    let n = await fetchNumber()
    print("Fetched:", n)  // 42
}

Wstrzymanie, a następnie wznowienie

await wstrzymuje zadanie do czasu, aż wynik będzie gotowy, po czym wykonywanie jest płynnie wznawiane w następnym wierszu.

func greet(after seconds: Double) async -> String {
    let ns = UInt64(seconds * 1_000_000_000)
    try? await Task.sleep(nanoseconds: ns)
    return "Hello after \(Int(seconds))s"
}

Task {
    print(await greet(after: 1.0))
    print("Back on the same task after await.")
}

Podstawy async let

Użyj async let, aby uruchamiać zadania podrzędne. Należą one do bieżącego zakresu i przed jego opuszczeniem trzeba na nie zaczekać.

// Run child tasks concurrently within the same scope
func fetchUser() async -> String { "Ana" }
func fetchScore() async -> Int { 90 }

Task {
    async let name = fetchUser()
    async let score = fetchScore()
    // Both start immediately; await joins them before use
    let summary = await "\(name): \(score)"
    print(summary) // "Ana: 90"
    // Scope ends -> child tasks are awaited automatically (structured)
}

Zadania nadrzędne czekają na podrzędne

Strukturalność oznacza, że zadania nadrzędne nie mogą zakończyć się przed zadaniami podrzędnymi. Zapobiega to osieroconej pracy i zapewnia przewidywalny czas życia zadań.

// Parent Task encapsulates children lifetimes
func loadProfile() async -> String {
    async let name = fetchUser()
    async let score = fetchScore()
    return await "\(name) (\(score))"
}

Task {
    let profile = await loadProfile()
    print(profile) // e.g., "Ana (90)"
    // loadProfile does not return until its children are done
}

Wskazówki

Wskazówki:

  • Myśl w kategoriach zadań, a nie wątków.
  • Używaj async let do równoległej pracy zadań siostrzanych; przed opuszczeniem zakresu użyj await.
  • W demonstracjach usypiaj zadania za pomocą Task.sleep; w rzeczywistych aplikacjach używaj await do operacji sieciowych i plikowych.

Działanie await

Szybkie sprawdzenie: Co robi await?

Podsumowanie

Podsumowanie: Oznaczaj funkcje jako async i wywołuj je za pomocą await. Używaj async let do uruchamiania zadań siostrzanych i korzystaj ze współbieżności strukturalnej, aby zadania podrzędne kończyły się przed nadrzędnymi.

Często zadawane pytania

Czy lekcja „Współbieżność strukturalna i funkcje asynchroniczne” jest bezpłatna?

Tak — pełny tekst „Współbieżność strukturalna i funkcje asynchroniczne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Współbieżność strukturalna i funkcje asynchroniczne”?

Definiuj funkcje async , wywołuj je za pomocą await i poznaj współbieżność strukturalną : zadania potomne kończą się przed wyjściem z zakresu rodzica. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.

Ile czasu zajmuje lekcja „Współbieżność strukturalna i funkcje asynchroniczne”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Współbieżność strukturalna i funkcje asynchroniczne
  2. async let, Task i anulowanie
  3. try await i propagacja błędów
← Powrót do Swift Academy