Функция delay

Функция delay приостанавливает выполнение текущей корутины на указанное количество миллисекунд, не блокируя при этом поток. Является suspend-функцией, поэтому может быть вызвана только из другой suspend-функции или корутины. Принимает один параметр - время задержки в миллисекундах типа Long.

Импорт

kotlinimport kotlinx.coroutines.delay

Синтаксис

kotlinsuspend fun delay(timeMillis: Long)

Пример

Приостановим выполнение корутины на 1 секунду:

kotlinimport kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
  println("Start")
  delay(1000)
  println("End after 1 second")
}

Результат выполнения кода:

kotlinStart
End after 1 second

Пример

Создадим анимацию с помощью последовательных задержек:

kotlinimport kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
  for (i in 1..5) {
    println("Step $i")
    delay(500)
  }
  println("Animation completed")
}

Результат выполнения кода:

kotlinStep 1
Step 2
Step 3
Step 4
Step 5
Animation completed

Пример

Использование задержки с разным временем:

kotlinimport kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
  println("Short delay: 100ms")
  delay(100)
  
  println("Medium delay: 1.5 seconds")
  delay(1500)
  
  println("Long delay: 3 seconds")
  delay(3000)
  
  println("All delays completed")
}

Результат выполнения кода:

kotlinShort delay: 100ms
Medium delay: 1.5 seconds
Long delay: 3 seconds
All delays completed

Пример

Задержка в параллельных корутинах:

kotlinimport kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
  launch {
    delay(1000)
    println("Coroutine 1 completed")
  }
  
  launch {
    delay(2000)
    println("Coroutine 2 completed")
  }
  
  println("Main coroutine waiting")
}

Результат выполнения кода:

kotlinMain coroutine waiting
Coroutine 1 completed
Coroutine 2 completed

Смотрите также

  • функцию runBlocking,
    которая создает блокирующий контекст для корутин
  • функцию launch,
    которая запускает новую корутину
  • функцию async,
    которая запускает корутину с возвратом результата
  • функцию withContext,
    которая переключает контекст выполнения корутины