Вступить в клуб →
средняявопросСеть, данные и конкурентность

Три независимых запроса подряд через await: экран собирается почти секунду

func loadScreen() async throws -> Screen {
    let profile = try await api.profile()
    let orders  = try await api.orders()
    let banners = try await api.banners()
    return Screen(profile: profile, orders: orders, banners: banners)
}

Каждый запрос идёт примерно 300 мс, запросы друг от друга не зависят, экран собирается около 900 мс. Как корректно сократить время?

  • Запустить запросы параллельно через async let (или TaskGroup) и дождаться всех трёх результатов
  • Обернуть каждый вызов в отдельный Task без await — они уйдут параллельно, а результаты попадут в те же переменные
  • Вызвать функцию из DispatchQueue.global().async — на фоновой очереди await начнёт выполняться параллельно
  • Пометить функцию @MainActor: главный актор обрабатывает независимые вызовы одновременно

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела