Как в suspend функции запустить выполнение задач параллельно

«Как в suspend функции запустить выполнение задач параллельно» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для параллельного выполнения задач в suspend функции используйте coroutineScope с async:

suspend fun fetchData() = coroutineScope {
    val deferred1 = async { fetchUserData() }
    val deferred2 = async { fetchProductData() }

    val user = deferred1.await()
    val product = deferred2.await()

    // Обработка результатов
}

Ключевые моменты:

  1. coroutineScope создает область видимости для корутин
  2. async запускает задачи параллельно
  3. await() получает результаты (выполняет ожидание)
  4. Все дочерние корутины завершатся при выходе из coroutineScope

Для отмены всех задач при ошибке используйте supervisorScope вместо coroutineScope.