0Pricing
Swift Academy · Урок

Синтаксис async/await и вызов асинхронных функций

Пишите и вызывайте асинхронные функции и разбирайтесь в точках приостановки.

«Синтаксис async/await и вызов асинхронных функций» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Добро пожаловать

Синтаксис async/await в Swift позволяет читать асинхронный код как синхронный. `async` обозначает функцию, которая может приостановиться, а `await` — точку приостановки.

Функция async

```swift func fetchUser(id: Int) async throws -> User { let url = URL(string: "https://api.example.com/users/\(id)")! let (data, _) = try await URLSession.shared.data(from: url) return try JSONDecoder().decode(User.self, from: data) } ```

Вызов с await

```swift Task { let user = try await fetchUser(id: 42) print(user.name) } ```

Точки приостановки

`await` — это точка приостановки: функция останавливается здесь и возвращает поток системе. После завершения асинхронной операции выполнение возобновляется.

async в MainActor

```swift @MainActor func updateUI() async { let data = try? await fetchData() label.text = data?.description ?? "Error" } ```

Переход от обратных вызовов к async

```swift func fetchAsync() async throws -> Data { try await withCheckedThrowingContinuation { cont in URLSession.shared.dataTask(with: url) { data, _, error in if let data { cont.resume(returning: data) } else { cont.resume(throwing: error!) } }.resume() } } ```

Обработка ошибок с помощью try await

```swift do { let user = try await fetchUser(id: 1) render(user) } catch URLError.notConnectedToInternet { showOfflineMessage() } catch { showError(error) } ```

await в циклах for

```swift for id in userIds { let user = try await fetchUser(id: id) // sequential process(user) } ``` Эта конструкция получает данные по одному. Для параллельного получения используйте async let.

Возвращаемые значения

```swift func sum(a: Int, b: Int) async -> Int { await Task.sleep(nanoseconds: 1_000_000) return a + b } let result = await sum(a: 3, b: 4) // 7 ```

Асинхронные свойства

```swift var thumbnail: UIImage { get async { try! await loadImage(url: imageURL) } } let img = await post.thumbnail ```

Быстрая проверка

Что означает `await` в точке приостановки?

Повторение

Основные выводы: • `async` — обозначает функцию, которую можно приостанавливать • `await` — точка приостановки; поток освобождается во время ожидания • `try await` используется для асинхронных функций, выбрасывающих ошибки • `@MainActor` используется для работы с пользовательским интерфейсом • `withCheckedThrowingContinuation` связывает обратные вызовы с асинхронным кодом Далее: задачи и отмена.

Часто задаваемые вопросы

Урок «Синтаксис async/await и вызов асинхронных функций» бесплатный?

Да — полный текст урока «Синтаксис async/await и вызов асинхронных функций» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Синтаксис async/await и вызов асинхронных функций»?

Пишите и вызывайте асинхронные функции и разбирайтесь в точках приостановки. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Синтаксис async/await и вызов асинхронных функций»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Синтаксис async/await и вызов асинхронных функций
  2. Task и отмена Task
  3. async let и параллельные дочерние задачи
  4. Акторы: защита общего изменяемого состояния
← Назад к Swift Academy