Concept Flow - Suspend functions concept
Call suspend function
Suspend execution
Other work runs
Resume suspend function
Complete function and return
Shows how a suspend function pauses its work, lets other code run, then resumes later.
import kotlinx.coroutines.* suspend fun fetchData(): String { delay(1000) return "Data" } fun main() = runBlocking { val result = fetchData() println(result) }
| Step | Action | State | Output |
|---|---|---|---|
| 1 | Call fetchData() | Start fetchData, delay begins | |
| 2 | delay(1000) suspends fetchData | fetchData paused, main continues | |
| 3 | runBlocking waits for fetchData | Waiting for fetchData to resume | |
| 4 | After 1 second, fetchData resumes | fetchData resumes after delay | |
| 5 | fetchData returns "Data" | fetchData completes | |
| 6 | main receives result | result = "Data" | |
| 7 | println(result) | Prints to console | Data |
| 8 | Program ends | All done |
| Variable | Start | After Step 4 | After Step 6 | Final |
|---|---|---|---|---|
| result | undefined | undefined | "Data" | "Data" |
suspend fun name() { ... } defines a suspend function.
Inside, suspend functions like delay() pause without blocking.
Caller must be in coroutine or runBlocking to call suspend functions.
Execution suspends and resumes later, enabling non-blocking waits.
Useful for asynchronous tasks like network or delay.