-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1-sequential-callbacks.kt
More file actions
43 lines (32 loc) · 1.14 KB
/
1-sequential-callbacks.kt
File metadata and controls
43 lines (32 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package AsynchronousProgramming
import kotlinx.coroutines.delay
private suspend fun readConfig(name: String, callback: (err: Error?, data: String) -> Unit) {
delay(1000)
println("(1) config loaded: $name")
callback(null, name)
}
private suspend fun doQuery(statement: String, callback: (err: Error?, data: String) -> Unit) {
delay(1000)
println("(2) SQL query executed: $statement")
callback(null, "[{ name: 'Kiev' }, { name: 'Roma' }]")
}
private suspend fun httpGet(url: String, callback: (err: Error?, data: String) -> Unit) {
delay(1000)
println("(3) Page retrieved: $url")
callback(null, "<html>Some archaic web here</html>")
}
private suspend fun readFile(path: String, callback: (err: Error?, data: String) -> Unit) {
delay(1000)
println("(4) Readme file loaded")
callback(null, "file loaded")
}
private suspend fun main() {
val callback = {er: Error?, data:String -> }
println("start")
readConfig("myConfig", callback);
doQuery("select * from cities", callback);
httpGet("http://kpi.ua", callback);
readFile("README.md", callback);
println("end")
delay(2000)
}