Три независимых запроса подряд через 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: главный актор обрабатывает независимые вызовы одновременно
