Skip to content

Commit 6341ac7

Browse files
Add playground example for async coroutine builder
1 parent 344ef3a commit 6341ac7

File tree

1 file changed

+34
-0
lines changed
  • app/src/main/java/com/lukaslechner/coroutineusecasesonandroid/playground/coroutinebuilders

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.lukaslechner.coroutineusecasesonandroid.playground.coroutinebuilders
2+
3+
import kotlinx.coroutines.async
4+
import kotlinx.coroutines.delay
5+
import kotlinx.coroutines.runBlocking
6+
7+
fun main() = runBlocking<Unit> {
8+
9+
val startTime = System.currentTimeMillis()
10+
11+
val deferred1 = async {
12+
val result1 = networkCall(1).also {
13+
println("result received: $it after ${elapsedMillis(startTime)}ms")
14+
}
15+
result1
16+
}
17+
18+
val deferred2 = async {
19+
val result2 = networkCall(2)
20+
println("result received: $result2 after ${elapsedMillis(startTime)}ms")
21+
result2
22+
}
23+
24+
val resultList = listOf(deferred1.await(), deferred2.await())
25+
26+
println("Result list: $resultList after ${elapsedMillis(startTime)}ms")
27+
}
28+
29+
suspend fun networkCall(number: Int): String {
30+
delay(500)
31+
return "Result $number"
32+
}
33+
34+
fun elapsedMillis(startTime: Long) = System.currentTimeMillis() - startTime

0 commit comments

Comments
 (0)