Модификатор suspend
Модификатор suspend применяется к функциям, которые могут приостанавливать выполнение корутин без блокировки потока. Такие функции могут содержать другие suspend-функции или использовать конструкции типа delay. Они работают только внутри корутин или других suspend-функций.
Синтаксис
suspend fun functionName(parameters): ReturnType {
// тело функции
}
Пример
Простая suspend-функция с задержкой:
import kotlinx.coroutines.*
suspend fun delayedGreeting() {
delay(1000)
println("Hello after delay")
}
fun main() = runBlocking {
delayedGreeting()
}
Результат выполнения кода:
Hello after delay
Пример
Suspend-функция, вызывающая другую suspend-функцию:
suspend fun firstTask() {
delay(500)
println("First task completed")
}
suspend fun secondTask() {
delay(300)
println("Second task completed")
}
suspend fun runTasks() {
firstTask()
secondTask()
}
fun main() = runBlocking {
runTasks()
}
Результат выполнения кода:
First task completed
Second task completed
Пример
Suspend-функция с возвращаемым значением:
suspend fun calculateSum(a: Int, b: Int): Int {
delay(200)
return a + b
}
fun main() = runBlocking {
val res = calculateSum(5, 7)
println(res)
}
Результат выполнения кода:
Int 12
Пример
Использование suspend-функции с корутинами:
suspend fun fetchData(): String {
delay(1000)
return "Data loaded"
}
fun main() = runBlocking {
val job = launch {
val data = fetchData()
println(data)
}
println("Waiting for data...")
job.join()
}
Результат выполнения кода:
Waiting for data...
Data loaded