Without Async
package com.glassthought.sandbox
import gt.sandbox.util.output.Out
import kotlinx.coroutines.*
val out = Out.standard()
fun main() = runBlocking {
// If you call suspend functions without async, then the first one will
// need to finish. Before the second one starts.
val resultOne = fetchDataOne()
val resultTwo = fetchDataTwo()
out.println("Combined result: ${resultOne + resultTwo}")
}
// Simulated data fetch function
suspend fun fetchDataOne(): Int {
delay(1000) // Simulate a network or heavy computation delay
out.println("Fetched data one")
return 10
}
// Another simulated data fetch function
suspend fun fetchDataTwo(): Int {
delay(1500) // Simulate a network or heavy computation delay
out.println("Fetched data two")
return 20
}
Command to reproduce:
gt.sandbox.checkout.commit 62f135ba00ec4f7e3094 \
&& cd "${GT_SANDBOX_REPO}" \
&& cmd.run.announce "./gradlew run"
Recorded output of command:
> Task :app:checkKotlinGradlePluginConfigurationErrors SKIPPED
> Task :app:processResources NO-SOURCE
> Task :app:compileKotlin
> Task :app:compileJava NO-SOURCE
> Task :app:classes UP-TO-DATE
> Task :app:run
[2024-11-13T04:25:30.419896Z][elapsed-since-start: 1058ms][tname:main/tid:1] Fetched data one
[2024-11-13T04:25:31.967076Z][elapsed-since-start: 2576ms][tname:main/tid:1] Fetched data two
[2024-11-13T04:25:31.970922Z][elapsed-since-start: 2579ms][tname:main/tid:1] Combined result: 30
BUILD SUCCESSFUL in 3s
2 actionable tasks: 2 executed
Backlinks