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
- Współbieżność strukturalna i funkcje asynchroniczne
- async let, Task i anulowanie
- try await i propagacja błędów