Using Coroutines for Asynchronous Programming

Kotlin Coroutines provide a powerful way to manage asynchronous programming in a more readable and maintainable manner compared to traditional callback-based approaches. By using coroutines, you can write asynchronous code in a sequential style, making it easier to reason about and debug. Coroutines can be used for tasks like network requests, database operations, or any long-running operations without blocking the main thread.

fun main() = runBlocking {
    launch {
        val result = fetchData()
        println("Data fetched: $result")
    }
}

suspend fun fetchData(): String {
    delay(1000) // Simulate a long-running task
    return "Hello, Coroutines!"
}