Функция async
Функция async является частью Kotlin Coroutines и позволяет запускать асинхронные операции.
Она возвращает объект типа Deferred<T>, где T - тип возвращаемого значения.
Для получения результата используется метод await.
Функция запускает новую корутину и возвращает её результат в виде отложенного значения.
Импорт
import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking
Синтаксис
fun <T> CoroutineScope.async(
context: CoroutineContext = EmptyCoroutineContext,
start: CoroutineStart = CoroutineStart.DEFAULT,
block: suspend CoroutineScope.() -> T
): Deferred<T>
Пример
Простой пример использования async для асинхронного выполнения:
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferred = async {
delay(1000)
"Hello World"
}
println(deferred.await())
}
Результат выполнения кода:
String "Hello World"
Пример
Параллельное выполнение нескольких асинхронных операций:
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferred1 = async {
delay(1000)
10
}
val deferred2 = async {
delay(1500)
20
}
println(deferred1.await() + deferred2.await())
}
Результат выполнения кода:
Int 30
Пример
Использование разных контекстов выполнения:
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferred = async(Dispatchers.IO) {
// Долгая операция
delay(2000)
42
}
println(deferred.await())
}
Результат выполнения кода:
Int 42
Пример
Обработка исключений в асинхронных операциях:
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferred = async {
try {
delay(1000)
throw RuntimeException("Error occurred")
} catch (e: Exception) {
"Caught exception: ${e.message}"
}
}
println(deferred.await())
}
Результат выполнения кода:
String "Caught exception: Error occurred"