Как задать тайм-аут для корутины

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

Ответ

В Kotlin можно задать тайм-аут для корутины с помощью функции withTimeout или withTimeoutOrNull:

// Выбросит TimeoutCancellationException при превышении тайм-аута
try {
    withTimeout(3000) {
        // Долгая операция
        delay(4000)
    }
} catch (e: TimeoutCancellationException) {
    // Обработка тайм-аута
}

// Вернет null вместо исключения
val result = withTimeoutOrNull(3000) {
    delay(4000)
    "Result"
}
// result будет null

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

  • Тайм-аут указывается в миллисекундах
  • withTimeout бросает исключение при превышении времени
  • withTimeoutOrNull возвращает null вместо исключения
  • Тайм-аут работает только внутри блока корутины