Kotlin Coroutines Async: методы и примеры кода для асинхронного программирования

функция вместе с примерами кода:

  1. asyncс await:
    Функция asyncиспользуется для асинхронного выполнения вычислений и возвращает Объект Отложенный. Функцию awaitможно использовать для ожидания результата объекта Deferred.

    import kotlinx.coroutines.*
    suspend fun calculateSum(a: Int, b: Int): Int {
       delay(1000) // Simulating a time-consuming computation
       return a + b
    }
    fun main() {
       runBlocking {
           val deferredResult = async { calculateSum(5, 3) }
           val result = deferredResult.await()
           println("The result is: $result")
       }
    }
  2. asyncс awaitAll:
    Если вам нужно одновременно выполнить несколько асинхронных вычислений и дождаться их завершения, вы можете использовать

  3. asyncс awaitAll:
    Если вам нужно выполнить несколько асинхронных вычислений одновременно и дождаться их завершения, вы можете использовать asyncв сочетании с awaitAll.

    import kotlinx.coroutines.*
    suspend fun calculateSum(a: Int, b: Int): Int {
       delay(1000) // Simulating a time-consuming computation
       return a + b
    }
    fun main() {
       runBlocking {
           val deferredResults = listOf(
               async { calculateSum(5, 3) },
               async { calculateSum(10, 2) },
               async { calculateSum(8, 7) }
           )
           val results = deferredResults.awaitAll()
           println("The results are: $results")
       }
    }
  4. asyncс обработкой исключений:
    Вы можете обрабатывать исключения, возникающие внутри блоков async, используя блоки try-catch..

    import kotlinx.coroutines.*
    suspend fun fetchData(): String {
       delay(1000) // Simulating fetching data
       throw Exception("Data retrieval failed")
    }
    fun main() {
       runBlocking {
           val deferredResult = async {
               try {
                   fetchData()
               } catch (e: Exception) {
                   "Error: ${e.message}"
               }
           }
           val result = deferredResult.await()
           println(result)
       }
    }

Это всего лишь несколько примеров использования функции asyncс сопрограммами Kotlin. Используя сопрограммы и async, вы можете писать эффективный и лаконичный асинхронный код на Kotlin.